HashMap | HashSet |
---|---|
实现了 Map 接口 | 实现了 Set 接口 |
储存键值对,不允许重现重复的键(key) | 仅仅存储对象,不允许集合中出现重复元素 |
使用 public Object put(Object Key,Object value) 方法将元素放入map中 |
使用 public boolean add(Object o) 方法将元素放入set 中,如果元素值重复返回 false,添加成功返回 true |
使用键对象来计算 hashcode 值 | 使用成员对象来计算 hashcode 值,对于两个对象来说 hashcode可 能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回false |
比较快,因为是使用唯一的键来获取对象 | HashSet 较 HashMap 来说比较慢 |
补充:
- Map 接口有两个基本的实现 TreeMap 和 HashMap
- TreeMap 保存了对象的排列次序,而 HashMap 不能
- HashMap可以有空的键值对(Key(null)-Value(null))
- HashMap 是非线程安全的(非 Synchronize),要想实现线程安全,那么需要调用 collections 类的静态方法 synchronizeMap() 实现