📜  HashMap 和 HashSet 的区别

📅  最后修改于: 2021-09-15 01:56:57             🧑  作者: Mango

HashSet 是 Set 接口的实现,不允许重复值。最重要的是,存储在 HashSet 中的对象必须覆盖 equals() 以检查相等性,而没有重复值的 hashCode() 方法存储在我们的集合中。

HashMap 是 Map 接口的一个实现,将键映射到值。映射中不允许出现重复键。基本上,Map 接口有两个实现类 HashMap 和 TreeMap,主要区别在于 TreeMap 维护对象的顺序,而 HashMap 不会。HashMap 允许空值和空键。

HashSet 和 HashMap 都不同步。

HashMap 和 HashSet 的区别

1)实现: HashMap实现Map接口,HashSet实现Set接口。

2)重复: HashSet 不允许重复值。 HashMap 存储键值对,并且不允许重复键。如果键重复,则旧键将替换为新值。

3) 存储对象时的对象数: HashMap 需要两个对象 put(K key, V Value) 向 HashMap 对象添加一个元素,而 HashSet 只需要一个对象 add(Object o) 。

4)虚拟值:在HashMap中没有虚拟值的概念,
HashSet 内部使用 HashMap 来添加元素。在HashSet的,参数在加载传递(Object)方法作为密钥K的Java内部关联于附加(Object)方法传递的每个值虚设值。

5)存储或添加机制: HashMap内部使用散列来存储或添加对象,HashSet内部使用HashMap对象存储或添加对象。

6) 更快: HashSet 比 HashMap 慢,

7) 插入HashMap 使用 put() 方法存储数据,而在 HashSet 中使用 add() 方法添加或存储数据。

8) 例子: HashSet 是一个集合,例如 {1, 2, 3, 4, 5, 6, 7},

HashMap 是一个键 -> 值对(键到值)映射,例如 {a -> 1, b -> 2, c -> 2, d -> 1}

请注意,在我上面的示例中,HashMap 中不能有重复的键,但可以有重复的值。

在HashSet中,不能有重复的元素

Java中HashSet和HashMap的例子

哈希集

// Java program to demonstrate working of HashSet
import java.util.HashSet;
  
public class HashSetExample {
  
    public static void main(String[] args)
    {
  
        HashSet hs = new HashSet();
        // Adding elements to the HashSet
        hs.add("geeks");
        hs.add("practice");
        hs.add("contribute");
;
  
        System.out.println("Before adding duplicate values \n\n" + hs);
  
        // Addition of duplicate elements
        hs.add("geeks");
        hs.add("practice");
  
        System.out.println("\nAfter adding duplicate values \n\n" + hs);
  
        // Addition of null values
        hs.add(null);
        hs.add(null);
  
        // Displaying HashSet elements
        System.out.println("\nAfter adding null values \n\n" + hs);
    }
}
输出:
Before adding duplicate values 

[practice, geeks, contribute]

After adding duplicate values 

[practice, geeks, contribute]

After adding null values 

[null, practice, geeks, contribute]

哈希表

import java.util.HashMap;
  
public class HashMapExample {
  
    public static void main(String[] args)
    {
  
        /* This is how to declare HashMap */
        HashMap hm = new HashMap();
  
        /*Adding elements to HashMap*/
        hm.put(12, "geeks");
        hm.put(2, "practice");
        hm.put(7, "contribute");
  
        System.out.println("\nHashMap object output :\n\n" + hm);
  
        // store data with duplicate key
        hm.put(12, "geeks");
  
        System.out.println("\nAfter inserting duplicate key :\n\n" + hm);
    }
}
输出:
HashMap object output :

{2=practice, 7=contribute, 12=geeks}

After inserting duplicate key :

{2=practice, 7=contribute, 12=geeks}