Différence entre List, Set et Map en java
List et Set sont des interfaces qui héritent l’interface Collection. Ici, nous allons discuter de la différence entre List, Set et Map en Java.
Table de comparaison
List | Set | Map | |
---|---|---|---|
Duplication | List permet les éléments en double. N’importe quel nombre d’éléments en double peut être inséré dans la liste sans affecter les mêmes valeurs existantes et leurs index. | Set n’autorise pas les doublons. Set et toutes les classes qui implémentent l’interface Set doivent avoir des éléments uniques. | Map stocke les éléments sous forme de paire clé/valeur. Map n’autorise pas les clés en double, par contre il autorise les valeurs en double. |
Valeurs nulles | List autorise n’importe quel nombre de valeurs NULL. | Set autorise au maximum une seule valeur NULL. | Map peut avoir au maximum une seule clé NULL et un nombre quelconque de valeurs NULL. |
Ordre | List et toutes les classes implémentant l’interface List maintient l’ordre d’insertion. | Set ne maintient aucun ordre; encore il y a quelques classes implémentant l’interface Set, trient les éléments dans un ordre tel que LinkedHashSet maintient les éléments dans l’ordre d’insertion. | Pareil à Set, Map ne stocke pas les éléments dans un ordre, mais il y a quelques classes implémentant l’interface Map, stockent les éléments dans un ordre. Par exemple TreeMap trie la map dans l’ordre croissant selon les clés et LinkedHashMap trie les éléments dans l’ordre d’insertion, l’ordre dans lequel ils ont été ajoutés à LinkedHashMap. |
Les classes utilisés | ArrayList, LinkedList etc. | HashSet, LinkedHashSet, TreeSet, SortedSet etc. | HashMap, TreeMap, WeakHashMap, LinkedHashMap, IdentityHashMap, etc. |
Quand utiliser List, Set et Map en Java
- Si vous ne souhaitez pas que les valeurs soient dupliquées dans la base de données, Set doit être votre premier choix, car toutes ses classes n’autorisent pas les doublons.
- Si des opérations de recherche fréquentes basées sur les valeurs d’index sont nécessaires, alors List (ArrayList) constitue un meilleur choix.
- S’il est nécessaire de maintenir l’ordre d’insertion, List est également préférée.
- Si l’exigence est d’avoir un mappage clés/valeurs dans la base de données, alors Map est votre meilleur choix.
Définition de List
Une collection ordonnée (également appelée séquence). L’utilisateur de cette interface a un contrôle précis sur l’emplacement de chaque élément inséré dans la liste. L’utilisateur peut accéder aux éléments par leur index (position dans la liste) et peut rechercher des éléments dans la liste.
Exemple
import java.util.List; import java.util.ArrayList; import java.util.LinkedList; public class ExempleList { public static void main(String[] args) { List arraylist = new ArrayList(); arraylist.add("Item1"); arraylist.add("Item2"); arraylist.add("Item3"); System.out.println("Eléments de ArrayList: "); System.out.print(arraylist); List linkedlist = new LinkedList(); linkedlist.add("Item1"); linkedlist.add("Item2"); linkedlist.add("Item3"); System.out.println("Éléments de LinkedList: "); System.out.print(ll); } }
La sortie
Eléments de ArrayList: [Item1, Item2, Item3] Éléments de LinkedList: [Item1, Item2, Item3]
Définition de Set
Set est une collection qui ne contient aucun élément en double. Plus formellement, Set ne contiennent pas une paire d’éléments e1 et e2 tels que e1.equals(e2)
.
Exemple
import java.util.Set; import java.util.HashSet; import java.util.TreeSet; public class ExempleSet { public static void main(String args[]) { int count[] = {10, 20, 30, 40, 50}; Set hashset = new HashSet(); try{ for(int i = 0; i<4; i++){ hashset.add(count[i]); } System.out.println(hashset); TreeSet treeset = new TreeSet(hashset); System.out.println("La liste triée est:"); System.out.println(treeset); } catch(Exception e){ e.printStackTrace(); } } }
La sortie
[30, 20, 10, 40] La liste triée est: [10, 20, 30, 40]
Définition de Map
Map est un objet qui mappe les clés aux valeurs. Une Map ne peut pas contenir des clés en double. chaque clé correspond à une valeur.
Exemple
import java.util.*; public class HashMapExemple { public static void main(String[] args) { HashMap tutoJava = new HashMap(); tutoJava.add(1, "Java"); tutoJava.add(2, "C++"); tutoJava.add(3, "Python"); System.out.println("Les éléments de HashMap :"+ tutoJava); } }
La sortie:
Les éléments de HashMap: {1 = Java, 2 = C++, 3 = Python}
Conclusion
Set, List et Map, ces trois interfaces constituent les interfaces clé du framework Collection dans Java, et tout développeur Java doit connaître ses particularités dans une situation donnée, et devrait pouvoir choisir la classe Collection à utiliser.
List, Set et Map sont des interfaces qui étendent l’interface Collection mais ne n’implémentent pas.
Et Map comme interface n’étends pas l’interface Collection.