一篇文章让你精通:java集合讲解(八,集合的解析与总结)

Posted 韶光不负

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一篇文章让你精通:java集合讲解(八,集合的解析与总结)相关的知识,希望对你有一定的参考价值。

 一,集合初步认识https://blog.csdn.net/weixin_47514459/article/details/120957581


二,List中ArrayList讲解https://blog.csdn.net/weixin_47514459/article/details/120978680

三,List中LinkList讲解https://blog.csdn.net/weixin_47514459/article/details/121046624 

四,集合中Set的初步理解https://blog.csdn.net/weixin_47514459/article/details/121085575

五,集合中Set的源码理解与功能https://blog.csdn.net/weixin_47514459/article/details/121106510

六,哈希表的理解https://blog.csdn.net/weixin_47514459/article/details/121214140

七,集合中Mapt的初步理解https://blog.csdn.net/weixin_47514459/article/details/121234216

八,集合中Map的源码解析https://blog.csdn.net/weixin_47514459/article/details/121274372

相信大家在对上面博客内容学习,对集合已经有了一定深度的理解,下面此篇文章讲的是对集合面试题的解析以及对集合简单的总结!如果文章对你有帮助不要忘了,点赞收藏哦!

目录

集合与数组的比较(对集合的相同点与不同点进行比较)

相同点:

不同点:

 顺序表与链表的区别

哈希表的原理(与HashMap的底层实现相似)

哈希表特点

哈希表结构

链表结构就会变成红黑树结构作用

哈希表的添加原理

哈希表查询原理(与添加原理相似)

TreeMap的底层原理

基本特征

每个节点的特征

添加原理

集合List,Set,Map的比较

数据结构时间复杂度比较 


 

集合与数组的比较(对集合的相同点与不同点进行比较)

相同点:

1,都可以存储多个元素,对外作为一个整体存在。

不同点:

1,数组的容量是固定的,无法动态改变,集合类容量可以动态改变。

2,数组能存储基本数据类型与引用数据类型(引用数据类型就是以对象方式进行存储),集合只能存储引用数据类型,(集合要存储基本数据类型,只能将基本数据类型进行封装变成封装类,进行存储!)

3,数组无法判断数组中的实际容量(length()方法告诉的是数组的容量,实际容量说的是没有存储null “空”,每一个位置都存储数据),集合可以判断实际容量是多少,对容量的多少不关心(size()方法判断实际容量为多少)

4,集合有多种数据结构(顺序表,链表,哈希表,二叉树等),多种特征(是否有序,是否唯一),适合多种情况(查询快,添加删除快,有序),数组只有顺序表这一种结构。

5,集合以类的方式进行存储,有封装,基础,多态等类的特性,通过简单方法与属性的调用就可以实现复杂操作,大大提高了开发效率。

 顺序表与链表的区别

 

哈希表的原理(与HashMap的底层实现相似)

哈希表特点

块,非常快:查询快,添加快。

哈希表结构

jdk1.7版本最常用的结构是:数组+链表

 

在jdk1.8之后:链表+红黑数(当链表长度 >=8时候,链表结构就会变成红黑树结构 ) 

链表结构就会变成红黑树结构作用

减少查询次数,提高查询的效率。

哈希表的添加原理

1,计算哈希码(根据hashcode()方法进行计算)

2,计算存储位置 (计算数据在哈希表中的存储位置,存储位置就是索引)

3,存入指定位置中 (判断数据是否冲突,判断数据是否重复,通过equal()方法进行比较)

哈希表查询原理(与添加原理相似)

1,计算哈希码(根据hashcode()方法进行计算)

2,计算存储位置 (计算数据在哈希表中的存储位置,存储位置就是索引)

3,找到指定位置

TreeMap的底层原理

基本特征

二叉树,二叉平衡树,红黑树等等。

二叉平衡树:在一个树种,一个树根,任何一个节点到树根的最长路径不能大于最短路径的二倍。

 

每个节点的特征

 key:存储哈希表索引(具有唯一性)

value:存储值

left:左节点,存储比自己小的值。

right:右节点,存储比自己大的值。

parent:如果存在父节点,存储父节点。

color:存储红黑树中颜色。

添加原理

1,从根节点开始比较

2,添加过程就是制造二叉平衡树的过程,会自动平衡。

3,平衡需要比较:先外部比较器,然后是内部比较器。否则会出错。

集合List,Set,Map的比较

数据结构时间复杂度比较 

顺序表时间复杂度O(N)<二叉树O(longn)<哈希表O(1)

以上是关于一篇文章让你精通:java集合讲解(八,集合的解析与总结)的主要内容,如果未能解决你的问题,请参考以下文章

一篇文章让你精通:java集合讲解(练习处理)

一篇文章让你精通:java集合讲解

一篇文章让你精通:java集合讲解(二,LinkList)

一篇文章让你精通:java集合讲解(四,Set)

一篇文章让你精通:java集合讲解(六,Map)

一篇文章让你精通:java集合讲解(二,ArrayList)