Java-HashMap和HashSet的区别

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() 实现