学习笔记Day33
2021/7/9 23:19:56
本文主要是介绍学习笔记Day33,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
学习笔记Day33
Vector的源码分析:
jdk7和jdk8中通过Vector()构造器创建对象时,底层都创建了长度为10的数组。在扩容方面,默认扩容为原来的数组长度的2倍。
Set接口中没有额外定义方法,使用的都是Collection中声明过的方法
特别注意:当调用HashSet里的set.remove§时,需要计算p的hashcode,是否存在此值,如果存在此值则remove,如果无此hashcode,则不删除。
Map:双列数据,存储key-value对的数据 ----类似于函数。
面试题:
1.HashMap的底层实现原理?
2.HashMap与Hashtable的区别?
Map结构的理解:
Map的key:无序的,不可重复的,使用Set存储所有的key ----> key所在的类要重写equals()和hashcode() (以hashmap 为例)
Map中的value:无序的,使用collection存储所有value----> value所在类要重写equals().
一个键值对构成了一个entry对象,map中的entry:无序,不可重复的,使用Set存储所有的entry。
LinkedHashMap的底层实现原理:
源码中:
Map中定义的方法:
HashMap中的遍历操作(key使用的set保存,value使用的collection保存,key-value使用的set保存,内部定义的entry):
注意向TreeMap中添加key-value,要求key必须是同一个类创建的对象,因为要按照key进行排序:自然排序和定制排序
Collections:操作Collection(List/Set)、Map的工具类,例如Colelctions.sort(List)
Iterator只能操作Collection,不能操作Map
ArrayList和HashMap都是线程不安全的,如果程序要求线程安全,可使用synchronizedList(List list)和synchronizedMap(Map map)
这篇关于学习笔记Day33的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?