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]