Java教程

学习笔记Day33

本文主要是介绍学习笔记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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!