Java中Set和Map接口之间的区别

Set VS Map 接口

在这里,我们将看到Map与Java中的Set接口有何不同,并且我们将看到以下几点,

Map 接口

  • Map是在java.util包中定义的接口。

  • Map是Java中的数据结构。

  • Map基于散列,并且Map对象以键值对的形式表示,并且键值对称为entry。

  • Map接口的性能比Set接口高。

  • 在Map接口的情况下,如果我们知道按键,则没有冲突概念。

  • Map接口的实现类是HashMap,LinkedHashMap和ConcurrentHashMap等。

  • Map与Collection不同,换句话说,Map与Collection之间没有关系(即,它不是Collection接口的子接口,因为Map未实现Collection接口。

  • 映射不能完全提供唯一性(即,键不允许重复,值不允许重复)。

  • 如果我们想将一组对象表示为键值对,则应该使用Map。

  • 该映射用于一组键值对。

示例

假设我们有一个包含很少元素的Map。在这里,我们按照{Java = 1000,C = 2000,C ++ = 3000,Ruby = 4000,Python = 1000,null = null,Django = null,null = 7000}的顺序添加元素,如果我们要检索元素因此检索元素的顺序可以不同(即不保留插入顺序,也不必与元素的插入和检索顺序相同。)因此输出将不同,顺序将类似于{Ruby = 4000 ,C = 2000,Django = null,Python = 1000,C ++ = 3000,null = 7000,Java = 1000}

//Java程序演示Map的行为

import java.util.Collection;

import java.util.Map;

import java.util.HashMap;

class MapClass {

    public static void main(String[] args) {

        //创建一个HashMap的实例

        Map map = new HashMap();

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

        map.put("Java", 1000);

        map.put("C", 2000);

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

        map.put("Ruby", 4000);

        map.put("Python", 1000);

        map.put("null", null);

        map.put("Django", null);

        /* Here we will not get any error but one null is accepted for keys*/

        map.put("null", 7000);

        //显示映射的检索顺序

        System.out.println("Current Map list is :" + map);

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

        Collection values = map.values();

        //显示映射的值

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

    }

}

输出结果

E:\Programs>javac MapClass.java

E:\Programs>java MapClass

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

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

Current Map Key values is :[4000, 2000, null, 1000, 3000, 7000, 1000]

现在,我们将看到set与Java中的Map接口有何不同,并且我们将看到以下几点,

Set 接口

  • Set是在java.util包中定义的接口。 

  • Set是Java中的数据结构。

  • Set对象以值的形式表示。 

  • Set接口的性能低于Map接口。 

  • 在设置接口的情况下,可能会有冲突概念。 

  • Set接口的实现类是HashSet,LinkedHashSet等。

  • Set与Collection没有区别,换句话说,Set与Collection之间存在关系(即,它是Collection接口的子接口,因为Set实现了Collection接口)。

  • Set提供了唯一性(即不允许重复,或者我们不能多次插入一个对象)。 

  • 如果我们想将一组对象表示为单个实体,则应该使用Set。 

  • 集合用于一组单个对象。

示例

假设我们有一个包含很少元素的Set。在这里,我们以[10,20,30,50,null]的顺序添加元素,如果我们要检索元素,则检索元素的顺序可以不同(即,不需要相同的插入和检索)元素的顺序)。因此输出将不同,顺序将类似于[null.50,20,10,30]。

//Java程序演示Set接口的行为 

import java.util.*;

class SetInterface {

    public static void main(String[] args) {

        //创建一个实例

        Set set = new HashSet();

        //通过使用add()方法添加元素

        set.add(10);

        set.add(20);

        set.add(30);

        set.add(50);

        set.add(null);

        //set.add(20);  

        //如果我们再加上20,那么我们不会得到任何错误,但是 

        //重复元素将被忽略

        //显示集元素

        System.out.println("Retrieval order of the elements in Set is :" + set);

    }

}

输出结果

E:\Programs>javac SetInterface.java

E:\Programs>java SetInterface

Retrieval order of the elements in Set is :[null, 50, 20, 10, 30]

以上是 Java中Set和Map接口之间的区别 的全部内容, 来源链接: utcz.com/z/321528.html

回到顶部