第四章 java中HashMap和HashSet的区别


常见的面试问题之一是“HashMap 和 HashSet 有什么区别”。在我们真正看到区别之前,让我先简单介绍一下两者。

哈希映射

ashMap 实现了 Map 接口,将键映射到值。它不是同步的,也不是线程安全的。不允许重复键,并且允许空键和值。

HashMap<Interger,String> employeeHashmap=new HashMap<Integer,String>();
employeeHashmap.put(1,"Arpit");
employeeHashmap.put(2,"John");

哈希集

HashSet 实现了不允许重复值的 Set 接口。它不同步,也不是线程安全的。

HashSet employeeSet=new HashSet();
employeeSet.add("Arpit");
employeeSet.add("Arpit");
employeeSet.add("john");

上面的employeeSet 将有2 个元素,因为Set 不允许重复值。 add 方法用于将元素添加到 HashSet。如果它返回 true,则元素添加成功,但如果返回 false,则您正在尝试插入重复值。

public boolean add(Object o)

关于 HashSet 的一件主要事情是我们要在 HashSet 中添加的对象必须实现 Hashcode() 和 equals() 方法,以便我们可以检查重复值。如果我们要向 HashSet 添加自定义对象,那么我们必须 override() Hashcode( ) 和 equals() 方法根据我们的需要。如果我们不覆盖,那么对象将采用默认实现,这可能是不可取的。

HashMap 与 HashSet:

范围 哈希映射 哈希集
界面 这是它们之间的核心区别。HashMap 实现了 Map 接口 HashSet 实现 Set 接口
数据存储方法 它以 key->value 对的形式存储数据。因此它使用 put(key,value) 方法来存储数据 它使用 add(value) 方法来存储数据
重复 HashMap 允许重复值但不允许重复键 HashSet 不允许重复值。
表现 它比哈希集更快,因为值是用唯一键存储的 它比 HashMap 慢
哈希码计算 在哈希映射中,哈希码值是使用键对象计算的 在此,哈希码是根据值对象计算的。两个值对象的哈希码可以相同,因此我们必须实现equals()方法。如果equals()方法返回false,则两个对象不同。


原文链接:https://codingdict.com/