学习笔记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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值