总图:

  • 绿色实线:接口的继承
  • 绿色虚线:接口的实现
  • 蓝色实线:类的继承
  • 红色实线:类的内部类

  从图中可以了解到,集合可以分为两大类:Collection、Map,两者又通过接口的实现类的内部类产生联系(这里是列出了 ValueCollection 这一个,还有别的没有列出来,只为了让结构图看起来整洁);在Collection接口下面有List、Set、Queue三大接口和一个AbstractCollection 虚类,Map接口下面有SortedMap接口、AbstractMap虚类、Hashtable类;它们各自有延伸出一系列的类或接口,从而构建出庞大的Java集合。

下面的图线条说明:

实线是继承关系、虚线是实现接口

1.ArrayList

ArrayList详解:Java基础之ArrayList详解_Allence的博客-CSDN博客一、介绍ArrayList是以什么数据结构实现的ArrayList底层的数据结构是顺序表。顺序表:物理内存上连续、逻辑上连续、大小可以动态扩展顺序表是由数组实现的,说道这里就理一下数组、链表、顺序表之间的关系。逻辑结构:结构定义中是对操作对像的数学描述,描述的是数据元素之间的逻辑关系。例如,线性结构,树形结构,图状结构或网状结构。它们都属于逻辑结构。物理结构:又称存储结构,是数据结构在计算机中的表示(又称映像)。例如,数组,指针。线性表:属于逻辑结构中的线性结构,它包括顺序表和链表。https://blog.csdn.net/m0_37707561/article/details/122527303

2.LinkedList

LinkedList详解:

LinkedList详解_Allence的博客-CSDN博客java集合总结:ArrayList详解_Allence的博客-CSDN博客一、介绍ArrayList是以什么数据结构实现的ArrayList底层的数据结构是顺序表。顺序表:物理内存上连续、逻辑上连续、大小可以动态扩展顺序表是由数组实现的,说道这里就理一下数组、链表、顺序表之间的关系。逻辑结构:结构定义中是对操作对像的数学描述,描述的是数据元素之间的逻辑关系。例如,线性结构,树形结构,图状结构或网状结构。它们都属于逻辑结构。物理结构:又称存储结构,是数据结构在计算机中的表示(又称映像)。例如,数组,指针https://blog.csdn.net/m0_37707561/article/details/122621760

3. Stack 和 Vector

Vector和Stack详解:

Vector和Stack详解_Allence的博客-CSDN博客Vector底层实现、数据结构和ArrayList一样都是对数组的操作,只不过Vector的方法经过synchronized修饰是同步的所以Vector是线程安全的,还有扩容的时候如果不指定扩容大小会默认扩容为原来的2倍,ArrayList是1.5倍。Stack是继承Vector,所以底层数据结构也是数组,只不过Stack它是按照栈的逻辑结构实现的,比如push方法在末尾压入一个元素和pop方法就是弹出最后一个元素,search方法也是从后往前查找,这些都是因为栈的特性是后入先出,有一点要注意Sta..https://blog.csdn.net/m0_37707561/article/details/1227211454.HashMap、LinkedHashMap、WeakHashMap

(1).hashMapHashMap源码解析_AllenC6的博客-CSDN博客_hashmap源码解读一、HashMap用到的数据结构哈希表、数组、链表、红黑树数组、链表这里不再讲了1.哈希表(1).哈希表定义:哈希表又叫散列表,是一种根据设定的映射函数f(key)将一组关键字映射到一个有限且连续的地址区间上,并以关键字在地址区间中的“像”作为元素在表中的存储位置的一种数据结构。这个映射过程称为哈希造表或者散列,这个映射函数f(key)即为哈希函数也叫散列函数,通过哈希函数得到的存储位置称为哈希地址或散列地址(2).哈希冲突定义:对于不同的关键字,可能得到同一个哈希地址,即keyhttps://blog.csdn.net/m0_37707561/article/details/123188241

(2).LinkedHashMap

LinkedHashMap源码解析_AllenC6的博客-CSDN博客从继承关系上,我们看到LinkedHashMap继承了HashMap,它里面的增删改差遍历的逻辑都是使用的HashMap中的,但是LinkedHashMap比HashMap多了一个双向链,这个双向链是从第一个插入的元素开始按照插入顺序,连接起来,所以可以说LinkedHashMap是可以保证插入顺序的。看图:这里就简单的给大家看一下这个链是啥样的,不画红黑树了1).是在创建新节点的时候,把双向链连接起来,注意有两种节点一个是TreeNode一个普通Node源码:代码太简单了,这里简单描述一下,就是添加https://blog.csdn.net/m0_37707561/article/details/125336796

5.HashTable

HashTable源码解析_AllenC6的博客-CSDN博客HashTable的操作几乎和HashMap一致,主要的区别在于HashTable为了实现多线程安全,在几乎所有的方法上都加上了synchronized锁,而加锁的结果就是HashTable操作的效率十分低下。不建议使用HashTable,Oracle官方也将其废弃,建议在多线程环境下使用ConcurrentHashMap类。HashMap是线程不安全的类,多线程下会造成并发冲突,但单线程下运行效率较高;HashTable是线程安全的类,很多方法都是用synchronized修饰,但同时因为加锁导致并发效率https://blog.csdn.net/m0_37707561/article/details/125375043

6. TreeMap

7. HashSet和LinkedHashSet

8.TreeSet

9.Collections、Arrays

10.Comparable、Comparator

两个接口,实现comParable接口的类就有了直接和别人比较的能力,例如Integer。

实现了Comparator接口就有了比较两个相同类型的类的能力,实质是工具类。

好的文章:

详解Java中Comparable和Comparator接口的区别_牵着蜗牛_去散步-CSDN博客_comparable和comparator接口的区别Comparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。此外,“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或“有序集合(TreeSet)”中的元素,而不需要指定比较器。接口中通过x.compareTo(y)来比较x和y的大小。若返回负数,意味着x比y小;返回零,意味着x等于y;返...https://blog.csdn.net/u010859650/article/details/85009595

Java集合概览、实现细节、数据结构相关推荐

  1. 高手不得不知的Java集合List的细节

    写在前面 作为Android开发者,Java集合可能是开发中最常使用的类之一了.但很多人可能跟我一样,对Java集合只停留在"使用"的层面上,而对其的实现.原理如何只是略知一二,所 ...

  2. 常见Java集合的实现细节

    1. Set和Map Set代表一种集合元素无序.集合元素不可重复的集合,Map则代表一种由多个key-value对组成的集合,Map集合类似于传统的关联数组.表面上看它们之间相似性很少,但实际上Ma ...

  3. 程序员基本功03常见JAVA集合的实现细节

    笔记笔记自己看的 1.Set和Map的关联之处 Set代表一种集合元素无序.不可重复的集合,Map代表一种由多个键值对组成的集合.Map集合的Key之间不能重复且无序,也就是说,把map里的key单列 ...

  4. Java集合中的细节

    integer数据对比 对于Integer var = ? 在-128至127范围内的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值 ...

  5. Java集合- HashMap 的底层数据结构实现原理

    一.HashMap 的数据结构 JDK1.8 之前 JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列. HashMap 通过 key 的 hashCode 经过扰 ...

  6. 容器(一)剖析面试最常见问题之 Java 集合框架

    转载自https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/Java%E9%9B%86%E5%90%88%E ...

  7. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...

    一个多月前,作者和一些小伙伴决定做一系列的 Java 知识点常见重要问题的小册,方便用来夯实基础!小册的标准就一个,那就是:取精华,取重点.每一本小册,我们都会充分关注我们所总结的知识点是否达到这个标 ...

  8. 「Java面试题精华集」1w字的Java集合框架篇(2022最新版)附PDF版

    昨天晚上终于把 Java 集合框架部分的的知识点肝完了,转换成 PDF 一共 25 页,后台回复:"面试突击" 即可免费获取下载地址(同样提供了夜间阅读版本). 集合概述 Java ...

  9. java集合框架总结(一)

    为什么80%的码农都做不了架构师?>>>    本系列博客详细介绍了JAVA集合框架,你将知道: 一.学习目标 1)java集合框架的层次结构 2)使用Collection接口定义的 ...

  10. 深入理解Java集合框架

    Java集合实现了常用数据结构,是开发中最常用的功能之一. Java集合主要的功能由三个接口:List.Set.Queue以及Collection组成. 常见接口: List : 列表,顺序存储,可重 ...

最新文章

  1. Python Django开发案例:POST方式实现登录功能
  2. .NET EFCore之增删改查
  3. python 绘制围棋棋盘_围棋之规则基础(一)
  4. CF1251F Red-White Fence(多项式/背包问题/组合数学)
  5. c语言注释和代码互换,c语言项目—注释转换(c——c++)
  6. CoreData之增删改查
  7. java hashset 实现_HashSet实现原理分析(Java源码剖析)
  8. 1分钟教你搞定apk签名!!!
  9. 关于 Google“博客搜索”Ping 服务应用编程接口(API)
  10. 老李分享: 全栈工程师? 2
  11. python闭包和函数调用区别_对python闭包(内嵌函数)的理解
  12. 高盛集团:金融科技布局
  13. 【一天一算法】冒泡排序
  14. JsessionId简介与过滤
  15. pi控制直流电机c语言,一种基于PI控制的直流电机调速控制系统及控制方法与流程...
  16. DM6437烧写总结
  17. face_landmarks
  18. 福昕高级PDF编辑器Mac版PDF编辑器注册机激活下载版
  19. 【银行】银行业务系统设计特点概述
  20. 2017 网易游戏互娱游戏研发4.21(offer)

热门文章

  1. 参考TLC5615基于verilog HDL实现SPI时序
  2. 1-10000的素数 java_java实验题(1-10000之间的素数和)
  3. 微信游戏,微信小说系统域名防封是如何做到的
  4. 修改build.prop文件,可更改新浪微博尾巴显示
  5. 实验报告怎么写之书写规范
  6. win10通过开启teredo访问ipv6
  7. 每日方法分享:免费一键抠图方法都有哪些?
  8. 去除水晶报表小数点最后多余的0
  9. Form表单提交数据的几种方式
  10. 567LH-DP24 驱动器 REO ELEKTRONIK NC系列