总图:

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

  从图中可以了解到,集合可以分为两大类: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. 这套Java调优方案太顶了!同时支撑10个618大促都不是问题
  2. perl5 第九章 关联数组/哈希表
  3. 在ppt中直接插入视频和图片-通过托拽
  4. 《Spring_four》团队作业4—基于原型的团队项目需求调研与分析
  5. ASP.NET Core Web程序托管到Windows 服务
  6. 怎样去理解@ComponentScan注解
  7. 13.C#的函数练习
  8. tensorflow的类、变量和函数讲解
  9. 【修改R语言的安装包路径】
  10. STM32工作笔记0100---认识设备的IMEI号和SN号的区别
  11. linux中打开caj文件,Ubuntu20.04使用CAJViewer for Linux(可双击打开.caj文件)
  12. 微信开发笔记:生成带参数的公众号二维码
  13. ng : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\ng.ps1,因为在此系统上禁止运行脚本
  14. 牛逼的人生都是从苦逼的岁月爬过来的
  15. 我司何晓磊受邀在“科创中国”做”创新”课程分享
  16. swoole 点对点发送消息推送
  17. 使用drawio画地图
  18. 计算机不能上网查找原因的步骤,电脑不能上网的原因及操作步骤_电脑突然不能上网...
  19. Redis升级到 6.x 版本后,12306网站起飞了!
  20. 百度Apollo计划跟踪:感知与预测中神经网络的分析

热门文章

  1. python 机器视觉测量_用Opencv python实现精密测量
  2. 关于高速光耦6n137的使用总结_高速光耦6n137典型应用电路图汇总(多谐振荡/光电隔离器/光耦开关) - 全文...
  3. 软件测试好学吗 入门还是很好学的,但想要深造就还是要费功夫
  4. 8421拨码开关C语言编程,8052单片机怎样读出8421BCD码拨码开关设定的数值
  5. 微信公众号文章采集方案
  6. win7怎么查看计算机主板,win7系统电脑查看主板型号的四种方法介绍
  7. 奇(异或)偶(同或)校验
  8. php相亲段子,个个都是老司机!NPC段子手们经典语录
  9. Lenovo Y50-70 1080p Hackintosh Catalina
  10. ui文件转换为py文件方法