个性化阅读
专注于IT技术分析

Java中HashSet和HashMap类之间的区别

本文概述

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);
}
}

输出:

Java中HashSet和HashMap类之间的区别

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);
}
}

输出:

Java中HashSet和HashMap类之间的区别

赞(0)
未经允许不得转载:srcmini » Java中HashSet和HashMap类之间的区别

评论 抢沙发

评论前必须登录!