本文概述
Java中的HashMap和HashSet是最受欢迎的Collection类。两者都用于数据结构。下表描述了HashMap和HashSet之间的区别:
基础 | 哈希图 | 哈希集 |
---|---|---|
Definition | Java HashMap是基于哈希表的Map接口实现。 | HashSet是一个Set。它创建一个使用哈希表进行存储的集合。 |
Implementation | HashMap实现Map, Cloneable和Serializable接口es。 | HashSet实现Set, Cloneable, Serializable, Iterable和Collection接口。 |
Stores | 在HashMap中, 我们存储一个键值对。它维护键和值的映射。 | 在HashSet中, 我们存储对象。 |
Duplicate values | 它不允许重复的键, 但是允许重复的值。 | 它不允许重复的值。 |
Null values | 它可以包含一个null键和多个null值。 | 它可以包含一个空值。 |
插入方法 | HashMap使用put()方法在HashMap中添加元素。 | HashSet使用add()方法在HashSet中添加元素。 |
Performance | HashMap比HashSet更快/, 因为值与唯一键关联。 | HashSet比HashMap慢, 因为成员对象用于计算哈希码值, 这对于两个对象可以相同。 |
对象数 | 在添加操作期间仅创建一个对象。 | 在put操作期间创建了两个对象, 一个用于键, 一个用于值。 |
Storing Mechanism | HashMap在内部使用哈希存储对象。 | HashSet在内部使用HashMap对象存储对象。 |
Uses | 当我们不保持独特性时, 总是喜欢。 | 当我们需要维护数据的唯一性时使用它。 |
Example | {a-> 4, b-> 9, c-> 5}其中a, b, c是键, 而4, 9、5是与键关联的值。 | {6、43、2、90、4}表示集合。 |
让我们通过程序来了解差异。
HashMap的例子
在下面的示例中, 当我们添加具有相同键和不同值的重复元素时, 键的先前值将被新值替换。
当我们添加具有相同键和相同值的重复元素时, 键值对不会存储第二次。
import java.util.*;
public class HashMapExample
{
public static void main(String args[])
{
//creating object of HashMap
HashMap<String, Integer> hm= new HashMap<String, Integer>();
//adding key-value pair
hm.put("John", 23);
hm.put("Monty", 27 );
hm.put("Richard", 21);
hm.put("Devid", 19);
System.out.println("Before adding duplicate keys: ");
System.out.println(hm);
//adding duplicate keys
hm.put("Monty", 25); //replace the Monty's previous age
hm.put("Devid", 19);
System.out.println("After adding duplicate keys: ");
System.out.println(hm);
}
}
输出:
HashSet的示例
在下面的示例中, 我们可以看到重复值不存储在HashSet中, 而空值仅存储一次。
import java.util.*;
public class HashSetExample
{
public static void main(String args[])
{
//creating object of HashSet
HashSet<String> hs= new HashSet<String>();
//adding values to HashSet
hs.add("Java");
hs.add("Python");
hs.add("C++");
hs.add("C");
System.out.println("Before adding duplicate and null values: ");
System.out.println(hs);
//adding duplicate values
hs.add("Python");
hs.add("C");
System.out.println("After adding duplicate values: ");
System.out.println(hs);
//adding null values
hs.add(null);
hs.add(null);
System.out.println("After adding null values: ");
System.out.println(hs);
}
}
输出:
评论前必须登录!
注册