Java >> Tutoriel Java >  >> Java

Différences entre l'interface Set et Map en Java

Interface ensemble vs carte

Ici, nous verrons comment Map diffère de l'interface Set en Java et nous verrons les points donnés ci-dessous,

Interface cartographique

  • La carte est une interface définie dans le package java.util.
  • La carte est la structure de données en Java.
  • La carte est basée sur le hachage et l'objet Map est représenté sous la forme de paires clé-valeur et les paires clé-valeur sont appelées entrée.
  • Les performances de l'interface Map sont élevées par rapport à l'interface Set.
  • Dans le cas de l'interface Map, il n'y a pas de concept de collision si nous connaissons les clés.
  • La classe d'implémentation de l'interface Map est HashMap, LinkedHashMap et ConcurrentHashMap, etc.
  • La carte est différente de la collection ou en d'autres termes, il n'y a pas de relation entre la carte et la collection (c'est-à-dire qu'il ne s'agit pas d'une interface enfant de l'interface de la collection car la carte n'implémente pas l'interface de la collection).
  • La carte ne fournit pas entièrement l'unicité (c'est-à-dire que les doublons ne sont pas autorisés pour les clés et que les doublons sont autorisés pour les valeurs).
  • Nous devrions opter pour Map si nous voulons représenter un groupe d'objets sous forme de paires clé-valeur.
  • La carte est destinée à un groupe de paires clé-valeur.

Exemple :

Supposons que nous ayons une carte avec peu d'éléments. Ici, nous ajoutons les éléments dans l'ordre {Java=1000, C=2000, C++=3000, Ruby=4000, Python=1000,null=null, Django=null, null=7000} et si nous récupérons les éléments donc l'ordre de récupération des éléments peut être différent (c'est-à-dire que l'ordre d'insertion n'est pas conservé et qu'il n'est pas nécessaire que ce soit le même ordre d'insertion et de récupération des éléments.) donc la sortie sera différente et l'ordre sera comme {Ruby=4000 , C=2000, Django=null, Python=1000, C++=3000, null=7000, Java=1000}

// Java program to demonstrate the behavior of Map

import java.util.Collection;
import java.util.Map;
import java.util.HashMap;

class MapClass {
    public static void main(String[] args) {
        // Creating an instance of HashMap
        Map map = new HashMap();

        //By using put() method to add some values in 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);

        // Display retrieval order of Map
        System.out.println("Current Map list is :" + map);

        // by using values() to find values of Map
        Collection values = map.values();

        // Display Values of Map
        System.out.println("Current Map Key values is :" + values);
    }
}

Sortie

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]

Maintenant, nous allons voir comment set diffère de l'interface Map en Java et nous verrons les points donnés ci-dessous,

Définir l'interface

  • Set est une interface définie dans le package java.util.
  • Set est la structure de données en Java.
  • L'objet Set est représenté sous forme de valeurs.
  • Les performances de l'interface Set sont faibles par rapport à l'interface Map.
  • Dans le cas de l'interface Set, il peut y avoir des concepts de collision.
  • La classe d'implémentation de l'interface Set est HashSet, LinkedHashSet, etc.
  • Set n'est pas différent de Collection ou, en d'autres termes, il existe une relation entre Set et Collection (c'est-à-dire qu'il s'agit d'une interface enfant de l'interface Collection car Set implémente l'interface Collection).
  • Set fournit l'unicité (c'est-à-dire que les doublons ne sont pas autorisés ou que nous ne pouvons pas insérer un objet plusieurs fois).
  • Nous devrions opter pour Set si nous voulons représenter un groupe d'objets comme une seule entité.
  • Set est destiné à un groupe d'objets individuels.

Exemple :

Supposons que nous ayons un Set avec peu d'éléments. Ici, nous ajoutons les éléments dans l'ordre est [10,20,30,50, null] et si nous récupérons les éléments, l'ordre de récupération des éléments peut être différent (c'est-à-dire qu'il n'est pas nécessaire que ce soit la même insertion et récupération l'ordre des éléments.) donc la sortie sera différente et l'ordre sera comme [null.50,20,10,30].

// Java program to demonstrate the behavior of Set interface 

import java.util.*;

class SetInterface {
    public static void main(String[] args) {
        // Creating an instance
        Set set = new HashSet();

        // By using add() method to add an elements
        set.add(10);
        set.add(20);
        set.add(30);
        set.add(50);
        set.add(null);

        // set.add(20); 
        // if we add again 20 then we will not get any error but 
        // duplicate element will be ignored

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

Sortie

E:\Programs>javac SetInterface.java

E:\Programs>java SetInterface
Retrieval order of the elements in Set is :[null, 50, 20, 10, 30]

Balise Java