HashMap和HashSet都是Java Collection框架最重要的类之一。
以下是HashMap和HashSet之间的重要区别。
序号 | 键 | 哈希映射 | 哈希集 |
---|---|---|---|
1 | 实作 | Hashmap是Map接口的实现。 | 另一方面,哈希集是set接口的实现。 |
2 | 内部实施 | Hashmap在内部不实现哈希集或实现的任何集合。 | Hashset在内部使用Hashmap来实现。 |
3 | 元素存储 | HashMap以键-值对的形式存储元素,即每个元素都有其对应的键,该键是在迭代过程中进行检索所必需的。 | HashSet仅存储未维护此类键值对的对象。 |
4 | 添加元素的方法 | 哈希映射的put方法用于在哈希映射中添加元素。 | 另一方面,哈希集的添加方法用于在哈希集中添加元素。 |
5 | 指数表现 | 由于Hashmap具有唯一键,因此在其迭代期间可以更快地检索元素。 | HashSet完全基于对象,因此与hashmap相比要慢一些。 |
6 | 允许为空 | 可以在哈希映射中插入单个null键和任意数量的null值,而没有任何限制。 | 另一方面,哈希集在其集合中仅允许一个空值,此后不允许添加任何空值。 |
JavaTester.java
import java.util.HashSet; public class JavaTester { public static void main(String[] args){ HashSet<String> hs = new HashSet<String>(); hs.add("John"); hs.add("Smith"); hs.add("Peter"); System.out.println("Before adding duplicate values \n\n" + hs); hs.add("John"); hs.add("Smith"); System.out.println("\nAfter adding duplicate values \n\n" + hs); hs.add(null); hs.add(null); System.out.println("\nAfter adding null values \n\n" + hs); } }
输出结果
Before adding duplicate values [John, Smith, Peter] After adding duplicate values [John, Smith, Peter] After adding null values [null, John, Smith, Peter]
JavaTester.java
import java.util.HashMap; public class JavaTester { public static void main(String[] args){ HashMap<Integer, String> hm = new HashMap<Integer, String>(); hm.put(12, "John"); hm.put(2, "Smith"); hm.put(7, "Peter"); System.out.println("\nHashMap object output :\n\n" + hm); hm.put(12, "Smith"); System.out.println("\nAfter inserting duplicate key :\n\n" + hm); } }
输出结果
HashMap object output : {2=Smith, 7=Peter, 12=John} After inserting duplicate key : {2=Smith, 7=Peter, 12=John}