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

26 篇文章 1 订阅
13 篇文章 0 订阅

 一,集合初步认识icon-default.png?t=LA92https://blog.csdn.net/weixin_47514459/article/details/120957581


二,List中ArrayList讲解icon-default.png?t=LA92https://blog.csdn.net/weixin_47514459/article/details/120978680

三,List中LinkList讲解icon-default.png?t=LA92https://blog.csdn.net/weixin_47514459/article/details/121046624 

四,集合中Set的初步理解icon-default.png?t=LA92https://blog.csdn.net/weixin_47514459/article/details/121085575

五,集合中Set的源码理解与功能icon-default.png?t=LA92https://blog.csdn.net/weixin_47514459/article/details/121106510

六,哈希表的理解icon-default.png?t=LA92https://blog.csdn.net/weixin_47514459/article/details/121214140

七,集合中Mapt的初步理解icon-default.png?t=LA92https://blog.csdn.net/weixin_47514459/article/details/121234216

八,集合中Map的源码解析icon-default.png?t=LA92https://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)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶光不负

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值