Java中HashSet和HashMap类之间的区别

HashMap与HashSet

首先,我们将看到HashMap与Java中的HashSet有何不同?

HashMap 哈希映射

  • 此类在java.util包中可用。

  • 此类是Map接口的实现类。

  • HashMap是LinkedHashMap的父类。

  • HashMap的基础数据结构是Hashtable。

  • 在HashMap中,“插入顺序不保留”,因为它基于键的HashCode(即,插入顺序不需要与检索顺序相同)。

  • 在HashMap中,对象以键和值的形式表示,其中“不允许重复的键”但“允许重复的值”。

  • 在HashMap中,键和值都可以插入null,但键可以一次插入“ null”,而值可以多次插入“ null”。

  • 在HashMap中,键和值均允许使用异构对象。

示例

假设我们有一个包含少量元素的HashMap。在这里,我们按照{Java = 1000,C = 2000,C ++ = 3000,Ruby = 4000,Python = 1000,null = null,Django = null}的顺序添加元素,如果我们要检索元素,则顺序为检索元素可以是不同的(即,不需要元素的插入和检索顺序相同。)因此输出将是不同的,并且顺序将类似于{Ruby = 4000,C = 2000,Django = null,Python = 1000,C ++ = 3000,null = null,Java = 1000}

//Java程序演示HashMap的行为

import java.util.Collection;

import java.util.HashMap;

class HashMapClass {

    public static void main(String[] args) {

        //创建一个HashMap的实例

        HashMap hm = new HashMap();

        //通过使用put()方法在HashMap中添加一些值

        hm.put("Java", 1000);

        hm.put("C", 2000);

        hm.put("C++", 3000);

        hm.put("Ruby", 4000);

        hm.put("Python", 1000);

        hm.put("null", null);

        hm.put("Django", null);

        //hm.put(“ null”,null); 在这里我们不会得到任何错误"null",null); Here we will not get any error 

        //但是键接受一个null-

        //显示HashMap的检索顺序

        System.out.println("Current HashMap list is :" + hm);

        //通过使用values()查找HashMap的值

        Collection values = hm.values();

        //显示HashMap的值

        System.out.println("Current HashMap Key values is :" + values);

    }

}

输出结果

E:\Programs>javac HashMapClass.java

E:\Programs>java HashMapClass

Current HashMap list is :{Ruby=4000, C=2000, Django=null, 

Python=1000, C++=3000, null=null, Java=1000}

Current HashMap Key values is :[4000, 2000, null, 1000, 3000, null, 1000].

其次,我们将看到HashSet与Java中的HashMap有何不同?

HashSet 哈希集

  • 此类在java.util包中可用。

  • 此类是Set接口的实现类。

  • HashSet是LinkedHashSet的父类。

  • HashSet的基础数据结构是Hashtable。

  • 在HashSet中,“不保留插入顺序”(即,插入顺序不必与检索顺序相同)。

  • 在HashSet中,“不允许重复值”。

  • 在HashSet中,可以为值插入null。

  • 在HashSet中,允许异类对象。

示例

假设我们有一个包含少量元素的HashSet。在这里,我们按[1000,2000,3000,4000,null]的顺序添加元素,如果我们要检索元素,则检索元素的顺序可以不同(即,不需要相同的插入和检索)元素的顺序。)因此输出将有所不同,顺序将类似于[null,1000,2000,3000,4000]

import java.util.*;

class HashSetClass {

    public static void main(String[] args) {

        //创建HashSet的实例

        HashSet hs = new HashSet();

        //通过使用add()方法在HashSet中添加一些值

        hs.add(1000);

        hs.add(2000);

        hs.add(3000);

        hs.add(4000);

        hs.add(null);

        //hs.add(2000); 在这里我们不会得到任何错误或异常 

        //它会被忽略

        //显示HashSet的检索顺序

        System.out.println("Current HashSet list is :" + hs);

    }

}

输出结果

E:\Programs>javac HashSetClass.java

E:\Programs>java HashSetClass

Current HashSet list is :[null, 1000, 2000, 3000, 4000]

以上是 Java中HashSet和HashMap类之间的区别 的全部内容, 来源链接: utcz.com/z/353389.html

回到顶部