HashSet是Set接口的实现,不允许重复值。 最主要的是,存储在HashSet中的对象必须重写equals()来检查是否相等,而hashCode()方法要确保没有重复的值存储在我们的集合中。

HashMap是Map接口的实现,它将键映射到值。 映射中不允许使用重复键。Map接口基本上有两个实现类HashMap和TreeMap,主要区别是TreeMap保持对象的顺序,但HashMap不允许。HashMap允许null值和null键。

HashSet和HashMap都不同步。

  • 实现:HashMap实现Map接口,HashSet实现Set接口。
  • 重复项:HashSet不允许重复值。 HashMap存储键,值对,并且不允许重复的键。如果密钥重复,则旧密钥将替换为新值。
  • 存储对象期间的对象数:HashMap需要两个对象put(K键,V值)将元素添加到HashMap对象,而HashSet只需要一个对象add(Object o)。
  • 虚拟值:在HashMap中没有虚拟值的概念,HashSet在内部使用HashMap添加元素。在HashSet中,在add(Object)方法中传递的参数用作键K。Java在内部为在add(Object)方法中传递的每个值关联虚拟值。
  • 存储或添加机制:HashMap在内部使用散列来存储或添加对象,HashSet在内部使用HashMap对象来存储或添加对象。
  • 更快:HashSet比HashMap慢,
  • 插入HashMap使用put()方法存储数据,而在HashSet中使用add()方法添加或存储数据。

示例:HashSet是一个集合,例如{1,2,3,4,5,6,7},

HashMap是一个键->值对(键到值)映射,例如{a-> 1,b-> 2,c-> 2,d-> 1}

比较项 HasheSet HashMap
实现 Set Map
可重复 不可以 值可重复,键不可重复。
虚值
对象要求 1个 2个
添加或排序机制 HashMap 哈希技术
速度 比HashMap慢 比HashSet快
插入方法 Add() Put()
Null 只能有一个null值 有一个null键,多个null值

HashSet示例代码:

// Java program to demonstrate working of HashSet 
import java.util.HashSet; 

public class HashSetExample { 

    public static void main(String[] args) 
    { 

        HashSet<String> hs = new HashSet<String>(); 
        // Adding elements to the HashSet 
        hs.add("xnt"); 
        hs.add("practice"); 
        hs.add("contribute");  

        System.out.println("Before adding duplicate values" + hs); 

        // Addition of duplicate elements 
        hs.add("xnt"); 
        hs.add("practice"); 

        System.out.println("After adding duplicate values " + hs); 

        // Addition of null values 
        hs.add(null); 
        hs.add(null); 

        // Displaying HashSet elements 
        System.out.println("After adding null values" + hs); 
    } 
}

运行结果:

Before adding duplicate values 

[practice, xnt, contribute]

After adding duplicate values 

[practice, xnt, contribute]

After adding null values 

[null, practice, xnt, contribute]

HashMap示例代码:

import java.util.HashMap; 

public class HashMapExample { 

    public static void main(String[] args) 
    { 

        /* This is how to declare HashMap */
        HashMap<Integer, String> hm = new HashMap<Integer, String>(); 

        /*Adding elements to HashMap*/
        hm.put(12, "xntutor"); 
        hm.put(2, "practice"); 
        hm.put(7, "contribute"); 

        System.out.println("HashMap object output :" + hm); 

        // store data with duplicate key 
        hm.put(12, "xntutor"); 

        System.out.println("After inserting duplicate key :" + hm); 
    } 
}

运行结果:

HashMap object output :

{2=practice, 7=contribute, 12=xntutor}

After inserting duplicate key :

{2=practice, 7=contribute, 12=xntutor}
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.hasdiffer.com]
本文标题:HashMap和HashSet的区别
本文链接:http://www.vsdiffer.com/hashmap-vs-hashset.html
免责声明:本站部分内容除注明转载外,均为本站网站用户投稿或互联网整理。对于该内容的正确性如何,本站不负任何责任。同时,如本网站内容无意之中冒犯了您的权益,请联系站长,邮箱:1478761107#qq.com(使用@代替#),我们核实并会尽快处理。

相关主题

随机