Java中HashMap和HashSet的区别。


HashMapHashSet 都是 Java集合框架 中最重要的类之一。

以下是HashMap和HashSet之间的一些重要区别。

序号关键点HashMapHashSet
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}

更新于:2023年9月15日

24K+浏览量

启动你的职业生涯

完成课程获得认证

开始学习
广告