Java中HashMap和HashSet的区别。
HashMap 和 HashSet 都是 Java集合框架 中最重要的类之一。
以下是HashMap和HashSet之间的一些重要区别。
序号 | 关键点 | HashMap | HashSet |
---|---|---|---|
1 | 实现 | HashMap是Map接口的实现。 | HashSet是Set接口的实现。 |
2 | 内部实现 | HashMap在内部并没有实现HashSet或任何Set来进行实现。 | HashSet在内部使用HashMap来实现。 |
3 | 元素存储 | HashMap以键值对的形式存储元素,即每个元素都有其对应的键,在迭代过程中需要使用键进行检索。 | HashSet只存储对象,不维护键值对。 |
4 | 添加元素的方法 | HashMap的put方法用于向HashMap中添加元素。 | HashSet的add方法用于向HashSet中添加元素。 |
5 | 索引性能 | 由于HashMap具有唯一的键,因此在迭代过程中检索元素的速度更快。 | HashSet完全基于对象,因此与HashMap相比速度较慢。 |
6 | 允许空值 | HashMap可以插入单个空键和任意数量的空值,没有任何限制。 | HashSet在其集合中只允许一个空值,之后不允许添加任何空值。 |
HashMap与HashSet示例
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
" + hs); hs.add("John"); hs.add("Smith"); System.out.println("
After adding duplicate values
" + hs); hs.add(null); hs.add(null); System.out.println("
After adding null values
" + 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("
HashMap object output :
" + hm); hm.put(12, "Smith"); System.out.println("
After inserting duplicate key :
" + hm); } }
输出
HashMap object output : {2=Smith, 7=Peter, 12=John} After inserting duplicate key : {2=Smith, 7=Peter, 12=John}
广告