学习笔记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-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器