程序员基本功03常见JAVA集合的实现细节
笔记笔记自己看的
1、Set和Map的关联之处
Set代表一种集合元素无序、不可重复的集合,Map代表一种由多个键值对组成的集合。Map集合的Key之间不能重复且无序,也就是说,把map里的key单列出来是set集合。
2、Hash存储机制的快速存取原理
系统采用Hash算法决定集合元素的存储位置,保证快速存取集合元素
3、红黑树的快速访问机制
红黑树是一种自平衡二叉查找树,树中每个节点的值,都大于或等于在它左子树中的所有节点的值,并且小于或等于在它的右树中所有节点的值,这确保红黑树运行时可以快速查找和定位所需点。
4、Map和List的相似性
map接口提供了get(K key)方法允许map对象根据key取得value;list接口提供了get(int index)方法允许list对象根据元素索引取得value。list相当于所有key都是int类型的map,也可以说map相当于索引是任意类型的map
5、List集合代表线性表
6、LinkedList集合底层的链表实现
https://blog.csdn.net/LZJLZJLZJLZJLZJLZJ/article/details/52278461
7、不同集合类对Iterator提供实现类
iterator是一个迭代器接口,专门用于迭代Collection集合,包括set集合和list集合。iterator迭代器接口只有一个scanner实现类。显然scanner并不能用于迭代set、list集合。
set集合对应的iterator,都是对应map的内部类KeyIterator(EnumSet集合的Iterator是RegularEnumSet的一个内部类)
arraylist和vector的实现基本相同,除了arrayList是线程不安全,Vector是线程安全的,他们的iterator是AbstractList的内部类Itr。
linkedlist集合对应的Iterator是其内部类ListItr
ArrayDeque集合对应的Iterator是ArrayDeque$DeqIterator。
8、 HashMap底层的Hash存储机制
在存储时,系统将调用JAVA对象的hashCode()方法,得到其hashCode值,然后根据hashCode值来决定元素的存储位置。
9、TreeMap底层的红黑树存储机制
每向treemap中放入一个key-value对,系统会将该entry当成一个新节点,添加到已有红黑树中,保证key的有序。红黑树是一种自平衡二叉查找树,树中每个节点的值,都大于或等于它在左子树中所有节点的值,小于等于右子树节点的值,这确保红黑树运行时快速地查找和定位所需节点。
10、Set实现的底层依然是Map
11、Map的values()方法的返回值
返回值包含map中所有value的集合,但他们并不是list对象
12、arrayList集合底层的数组实现
https://blog.csdn.net/dingji_ping/article/details/51014914
https://blog.csdn.net/u012877472/article/details/50852933
13、ArrayList和LinkedList在不同场景下的性能差异
list代表一种线性表的数据结构,arraylist则是一种顺序存储的线性表。其底层采用数组来保存每一个元素,linkedlist则是一种链式存储的线性表。其本质是一个双向表,不仅实现了list接口,还实现了Deque接口,也就是说Linkedlist既可以当成双向链表使用,也可以当队列使用,还可以当成栈来使用。
arraylist删减元素性能差,查询快;linkedlist相反;
14、不同集合在Iterator迭代时产出元素的行为差异
iterator迭代器只负责各种集合所包含的元素进行迭代,它自己并没有保留集合元素,因此迭代时,不应该删除集合元素,否则引发concurrent modificationException异常。对于ArrayList、Vector、LinkedList等List集合来说,当Iterator遍历他们倒数第二个元素时,使用list集合的remove()方法删除集合的任意一个元素,不会引发异常,当正在遍历其他元素时就和引发异常。对于TreeSet、HashSet等Set集合而言,当Iterator遍历最后一个元素时,不发生异常。
https://www.jianshu.com/p/ebf037d54661
程序员基本功03常见JAVA集合的实现细节相关推荐
- 常见Java集合的实现细节
1. Set和Map Set代表一种集合元素无序.集合元素不可重复的集合,Map则代表一种由多个key-value对组成的集合,Map集合类似于传统的关联数组.表面上看它们之间相似性很少,但实际上Ma ...
- scjp java程序员_Sun认证Java程序员SCJP考题常见陷阱
(1) Two public classes in the same file. (illegal) 同一个文件里有两个public类.(非法) (2) Main method calling a n ...
- ZooKeeper官方文档学习笔记03-程序员指南03
我的每一篇这种正经文章,都是我努力克制玩心的成果,我可太难了,和自己做斗争. ZooKeeper官方文档学习笔记04-程序员指南03 绑定 Java绑定 客户端配置参数 C绑定 陷阱: 常见问题及故障 ...
- 程序员的视角:java GC
GC(Garbage Collection 垃圾回收)的概念随着 java 的流行而被人们所熟知. 实际 GC 最早起源于20世纪60年代的 LISP 语言,是一种自动的内存管理机制. GC 要解决的 ...
- 一年经验的java程序员薪资有多少?java收入分级
Java编程可以应用到网站建设.游戏开发.移动系统开发等多个领域.所以随着科学技术进步电子产品不断更新问世,越来越成为企业重视的开发人才.这也是Java编程在近几年越发火爆的原因.一年经验的java程 ...
- [茗洋芳竹]程序员常用不常见很难得的地址大全,博主很辛苦
[茗洋芳竹]程序员常用不常见很难得的地址大全,博主很辛苦 如果你有好的网址,请评论哦,我加上去,并附上你的昵称,并加上你的博客链接地址,表示感谢 茗洋芳竹声明:以下网址全部链接,本人全部测试过,如果发 ...
- 阿里十年资深程序员吐血总结之Java代理模式
阿里十年资深程序员吐血总结之Java代理模式 文章目录 阿里十年资深程序员吐血总结之Java代理模式 1.接口代理 2.类代理 3.动态代理都是通过反射实现的吗 4.jdk动态代理和cglib动态代理 ...
- 黑马程序员,黑马论坛----Java+云计算2期,就业率96.15%,平均薪水6820元!
来源:黑马程序员,黑马论坛 Java+云计算2期,就业率96.15%,平均薪水6820元! 班级名称:JavaEE+云计算2期 毕业时间:2013年7月9日 总人数:52 班主任:张道平 就业指 ...
- 程序员面试失败常见的5大原因,别让自己输在这些上面!
https://www.toutiao.com/a6528668025413960205/?tt_from=mobile_qq&utm_campaign=client_share&ti ...
最新文章
- 中班机器人上课视频_中班机器人律动公开课
- C++ Primer 有感(类)
- 2022年全球及中国智慧消防栓行业与十四五投资建议与竞争策略研究报告
- cvs update 用法_WinCVS的配置与使用方法
- 《博德之门 3》究竟有多「DnD」?
- 自己动手开发编译器(我们的朋友 -- 装配脑袋走了)
- python二分法求方程的根_Python查找函数f(x)=0根的解决方法
- oracle regr,oracle 分析函数
- 21OGNL与ValueStack(VS)-静态方法访问
- 1000个JQuery插件(转载)
- R语言实战:个人贷款违约预测模型
- ubuntu安装nvidia显卡驱动+cuda+cudnn
- 失传千年AE特效真经(三)
- 微信小程序 逆向还原
- 安全态势攻防赛事可视化,助力网络安全发展
- 魅蓝note2解锁bootloader教程
- 苹果手机充电口接触不良怎么办_手机充电插口松动!声音变小!手机死机!怎么办?...
- Linux系统信号定义
- 【U8+】卸载远程通后,U8提示错误无法加载DLL“UFPAClient.dll”找不到指定的模块。
- php 3d animation,CSS_纯CSS实现菜单、导航栏的3D翻转动画效果,我曾经向大家展示过闪光的logo - phpStudy...
热门文章
- easyexcel 无模板写入_给位,问个问题,用easyExcel无模板导出数据时,怎么在指定单元格添加计算公式呢?...
- 测试下微信公众号新功能
- 神器在手,代码命名从此高大上!
- Present算法verilog设计实现
- java传值的代码_SpringMVC的简单传值(实现代码)
- Linux复位usb hub,Linux USB subsystem --- USB Hub initialize
- java resultset 为空,ResultSet为空的有关问题
- 后处理安装_核燃料后处理设施中的热室
- 20220129CTF刷题-- WEB方向
- 洛谷 P2756 飞行员配对方案问题 (二分图/网络流,最佳匹配方案)