Java >> Tutoriel Java >  >> Java

Différences entre HashSet et LinkedHashSet en Java

HashSet et LinkedHashSet

  • Cette classe est disponible dans le package java.util.
  • Il s'agit d'une classe d'implémentation de l'interface Set.
  • La classe HashSet est le parent de la classe LinkedHashSet.
  • La structure de données sous-jacente pour implémenter HashSet est Hashtable.
  • Dans l'insertion de HashSet, l'ordre n'est pas conservé, ce qui signifie que l'ordre d'insertion des éléments n'a pas besoin d'être le même que l'ordre de récupération des éléments.
  • Cette classe HashSet est introduite dans la version antérieure de Java 1.2.
  • Nous devrions opter pour HashSet si l'ordre d'insertion des éléments n'est pas important.

Exemple :

Supposons que nous ayons un HashSet avec peu d'éléments. Ici, nous ajoutons les éléments dans l'ordre [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 HashSet

import java.util.*;

class HashSetClass {
    public static void main(String[] args) {
        // Creating an instance of HashSet
        HashSet hs = new HashSet();

        // By using add() method to add an elements into the HashSet
        hs.add(10);
        hs.add(20);
        hs.add(30);
        hs.add(50);
        hs.add(null);

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

Sortie

E:\Programs>javac HashSetClass.java

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

Ensemble de hachages liés

  • Cette classe est disponible dans le package java.util.
  • Il s'agit d'une classe d'implémentation de l'interface Set.
  • La classe LinkedHashSet est l'enfant de la classe HashSet.
  • La structure de données sous-jacente pour implémenter LinkedHashSet est une combinaison de Hashtable et LinkedList.
  • Dans LinkedHashSet, l'ordre d'insertion est préservé, ce qui signifie que l'ordre d'insertion des éléments doit être le même que l'ordre de récupération des éléments.
  • Cette classe LinkedHashSet est introduite dans la version antérieure de Java 1.4.
  • Nous devrions opter pour LinkedHashSet si l'ordre d'insertion des éléments est important.

Exemple :

Supposons que nous ayons un LinkedHashSet avec peu d'éléments. Ici, nous ajoutons les éléments dans l'ordre [10,20,30,50,null] et si nous récupérons les éléments, l'ordre de récupération des éléments doit être le même (c'est-à-dire qu'il doit s'agir du même ordre d'insertion et de récupération de les éléments.) donc la sortie sera la même et l'ordre sera comme [10,20,30,50,null].

// Java program to demonstrate the behavior of LinkedHashSet

import java.util.*;

class LinkedHashSetClass {
    public static void main(String[] args) {
        // Creating an instance of LinkedHashSet
        LinkedHashSet lhs = new LinkedHashSet();

        // By using add() method to add an elements into the LinkedHashSet
        lhs.add(10);
        lhs.add(20);
        lhs.add(30);
        lhs.add(50);
        lhs.add(null);

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

Sortie

E:\Programs>javac LinkedHashSetClass.java

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

Balise Java