java的集合对比

java 集合另一个大接口就是 Map ,与 Collection 最大的不同就是, Collection 存储的是一个对象,而 Map 存储的是一对对象,即 key—Value 的形式存储, key 是不能重复的。能把 Map 实例化的类有 4 个: HashMap Hashtable WeakHashMap TreeMap

 

 

Map 的遍历,是先通过 entrySet ()获取他 set 集合,同理, keySet ()获取他的 key set 集合, values ()获取他的 value set 集合,再通过 set 集合取 Iterator 进行遍历。

 

 

HashMap

 

 

他有 Map 的所有特性, key value 都是可以为 null 的。不是线程安全的,如果 key 重复了,那么后一个 key value 会覆盖前一个 key value ,反正保存的集合中, key 是不会有重复的。他有个初始容量( 16 和加载因子(默认为 0.75 ),他有一个阈值(初始容量 * 加载因子),如果 size 超过这个阈值,那么容量就 x 2

 

 

Hashtable

 

 

感觉他和 HashMap 差不多, Hashtable 的初始容量是 11 ,每次 size 增加 x2 +1 个。 key value 都不能为 null 他的线程安全的。他的遍历顺序和 HashMap 是反的, HashMap 是从前向后,而 Hashtable 是从后向前。他多了一种遍历方式, Enumeration

 

 

TreeMap

 

 

感觉他就是一个 key 有顺序的 key-value 集合,他的 key 不能是 null value 可以。他也不是线程安全的。

 

 

WeakHashMap

 

 

他和 HashMap 差不多,但是他的键是弱键,会被 GC 回收。

 

 

最后,若想把线程不安全的集合变成安全的,用 Collections.synchronizedMap Collections.synchronizedSet Collections.synchronizedList 函数是一种解决办法。

 

 

全部评论

相关推荐

09-18 20:41
门头沟学院 Java
要个offer怎么这...:哈哈哈哈哈哈,我也拿了0x10000000个offer,秋招温啦啦啦,好开心
我的秋招日记
点赞 评论 收藏
分享
迷茫的大四🐶:这就是他们口中的ai时代的一人公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务