Java >> Tutoriel Java >  >> Java

Différences entre HashSet et TreeSet en Java

HashSet contre TreeSet en Java

Tout d'abord, nous verrons comment TreeSet diffère de HashSet en Java ?

ArbreEnsemble

  • TreeSet est disponible dans le package java.util.
  • TreeSet est une classe d'implémentation de l'interface Set.
  • La structure de données sous-jacente de TreeSet est Balanced Tree.
  • Dans TreeSet "l'ordre d'insertion des éléments" n'est pas conservé car les éléments seront insérés dans TreeSet selon un ordre de tri croissant ou nous pouvons dire en d'autres termes "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".
  • Dans TreeSet, l'objet est représenté comme un groupe d'éléments individuels comme une seule entité en termes de valeurs uniquement.
  • Dans TreeSet "les éléments en double ne sont pas autorisés", cela signifie qu'il n'est pas possible d'insérer des éléments en double dans TreeSet.
  • Dans TreeSet "l'insertion nulle n'est pas possible" pour un ensemble non vide.
  • Dans TreeSet "l'insertion nulle est possible" pour un Set vide comme premier élément et si nous insérons null après avoir inséré le premier élément, alors ce n'est pas possible ou invalide.
  • Dans TreeSet, les "objets hétérogènes" ne sont pas autorisés et s'ils sont insérés avec force, nous obtiendrons une exception "ClassCastException".

Exemple :

// Java program to demonstrate the behavior of TreeSet

import java.util.*;

class TreeSetClass {
    public static void main(String[] args) {
        // Creating an instance of TreeSet
        TreeSet ts = new TreeSet();

        // By using add() to add elements in TreeSet
        ts.add(10);
        ts.add(30);
        ts.add(40);
        ts.add(20);

        /*  ts.add(30); 
            Here will not get any exception or errors 
            but it will be ignored because duplicate 
            insertion is not possible */

        /*  ts.add(null); 
            here we will get an exception NullPointerException 
            because we are inserting null for non-empty set */

        /*  ts.add("Java"); 
            here we will get an exception ClassCastException 
            because we are inserting hetrogenous object in TreeSet */

        // Display Current TreeSet
        System.out.println("Current TreeSet is :" + ts);
    }
}

Sortie

E:\Programs>javac TreeSetClass.java

E:\Programs>java TreeSetClass
Current TreeSet is :[10, 20, 30, 40]

Deuxièmement, nous verrons comment HashSet diffère de TreeSet en Java ?

HashSet

  • HashSet est disponible dans le package java.util.
  • HashSet est une classe d'implémentation de l'interface Set.
  • HashSet est une classe parente de LinkedHashSet.
  • La structure de données sous-jacente de TreeSet est Hashtable.
  • Dans HashSet "l'ordre d'insertion des éléments" n'est pas conservé ou nous pouvons dire en d'autres termes 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".
  • Dans HashSet, l'objet est représenté comme un groupe d'éléments individuels comme une seule entité en termes de valeurs uniquement.
  • Dans HashSet "les éléments en double ne sont pas autorisés", cela signifie qu'il n'est pas possible d'insérer des éléments en double dans HashSet.
  • Dans HashSet "l'insertion nulle est possible" pour l'ensemble non vide et vide.
  • Dans HashSet, les "objets hétérogènes" sont autorisés et s'ils sont insérés avec force, nous n'obtiendrons aucune exception.

Exemple :

// 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 elements in HashSet
        hs.add(10);
        hs.add(30);
        hs.add(40);
        hs.add(20);

        /*  Here we will not get any exception because 
            null insertion is possible in HashSet
        */
        hs.add(null);

        /*  Here will not get any exception or errors 
            but it will be ignored because duplicate insertion
            is not possible 
        */
        hs.add(30);

        /*  Here we will not get any exception because hetrogenous 
            object insertion is possible in HashSet
        */
        hs.add("Java");

        // Display Current HashSet
        System.out.println("Current HashSet is :" + hs);
    }
}

Sortie

E:\Programs>javac HashSetClass.java

E:\Programs>java HashSetClass
Current HashSet is :[null, 20, 40, 10, Java, 30]

Balise Java