泛型与File-复习
1. Map存储数据的特点是什么?并指明key,value,entry存储数据的特点。
双列数据,存储key-value对数据。
key:无序的、不可重复的 → Set 存储
value:无序的、可重复的 → Collection 存储
key-value:无序的、不可重复的 → Set存储

2. 描述HashMap的底层实现原理(jdk 8 版)
在jdk8中,
new HashMap() 的时候底层不会创建数组,在进行put操作的时候底层会创建一个长度为16的Node[]数组,
在进行put(key1,value1)操作时,
首先,会调用key1所在类的hashCode()计算key1的哈希值,此时哈希值经过某种算法计算以后,得到在Node数组中的存放位置,
如果此位置上的数据为空,此时的key1-value1添加成功,
如果此位置上的数据不为空,(意味着此位置上存在一个或多个数据(以链表形式存在)),比较key1和已经存在的一个或多个数据的哈希值:
	如果key1的哈希值与已经存在的数据的哈希值都不相同,此时key1-value1添加成功,以链表形式,
	如果key1的哈希值和已经存在的某一个数据(key2 - value2)的哈希值相同,继续比较:调用key1所在类的equals(key2)方法,比较:
		如果equals()返回false:此时key1-value1添加成功,以链表形式,
		如果equals()返回true:使用value1替换value2
在不断的添加过程中,会涉及到扩容问题,当超出临界值(且要存放的位置非空)时,默认的扩容方式:扩容为原来容量的2倍,并将原有数据复制过来,
在jdk8中,当数组中的某一个索引位置上的元素以链表形式存在的数据个数 > 8 且当前数组的长度 > 64 时,此时此索引位置上的所有数据改为使用红黑树存储,这样做的目的是减少查找的时间

3. Map中常用实现类有哪些?各自有什么特点?
大处着眼,小处着手。

Map中的常用实现类有
HashMap:是Map中的主要实现类,线程不安全的,效率高,可以存储null的key和value
LinkedHashMap:是HashMap的一个子类,保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。对于频繁的遍历操作,此类执行效率高于HashMap
TreeMap:保证按照添加的key-value对进行排序,实现排序遍历。此时考虑key的自然排序或定制排序,底层使用红黑树
Hashtable:是Map中的古老实现类,线程安全的,效率低,不能存储null的key和value
Properties:是Hashtable的一个子类,用来处理配置文件,key和value都是String类型

4. 如何遍历 Map 中的 kye-value 对,代码实现

5. Collection 和 Collections 的区别?
Collection 是存储单列集合的一个接口,存储了一些规范,内部有常用的List和Set接口
Collections 是操作 Collection 和 Map 的一个工具类,内部有很多方法,可以去调用
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇