一篇文章让你精通: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
相信大家在对上面博客内容学习,对集合已经有了一定深度的理解,下面此篇文章讲的是对集合面试题的解析以及对集合简单的总结!如果文章对你有帮助不要忘了,点赞收藏哦!
目录
集合与数组的比较(对集合的相同点与不同点进行比较)
相同点:
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集合讲解(八,集合的解析与总结)的主要内容,如果未能解决你的问题,请参考以下文章