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 函数是一种解决办法。

 

 

全部评论

相关推荐

fRank1e:吓得我不敢去外包了,但是目前也只有外包这一个实习,我还要继续去吗
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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