Maison  >  Article  >  Java  >  Quelle est la différence entre les collections en Java ?

Quelle est la différence entre les collections en Java ?

青灯夜游
青灯夜游original
2019-11-18 17:49:074874parcourir

Quelle est la différence entre les collections en Java ?

Quelle est la différence entre les ensembles en Java ?

En Java, les collections sont principalement divisées en trois types : List, Set et Map. List et Set héritent de Collection, mais pas Map.

La différence entre List et Set : les éléments de List ont un ordre de stockage et peuvent stocker des éléments répétés. L'efficacité de récupération est élevée, mais l'efficacité d'insertion et de suppression est faible et Set n'a pas d'ordre de stockage. Impossible de stocker les éléments répétés. Éléments ultérieurs Il remplacera les éléments précédemment répétés, ce qui entraînera une faible efficacité de récupération et une efficacité d'insertion et de suppression élevée. (L'emplacement de stockage de Set est déterminé par son code HashCode, donc l'objet qu'il stocke doit avoir la méthode equals(), et Set traversal ne peut utiliser que l'itération car il n'a pas d'indice.)

1 , le collection la plus couramment utilisée : ArrayList

Caractéristiques : Les emplacements de stockage des éléments de la collection ArrayList sont continus, la requête sera donc plus rapide, mais il sera plus difficile d'effectuer des opérations d'insertion et de suppression, ce qui entraînera des changements d'emplacement d'autres éléments.

Remarque : La liste stocke les références aux objets, pas aux objets eux-mêmes. Si vous n'êtes pas clair à ce sujet, il y aura un piège ici, par exemple :

Certaines personnes écrivent du code comme celui-ci afin de sauvegarder le code d'optimisation et d'économiser la mémoire de la machine virtuelle :

List<List<String>> list=new ArrayList<>();
List<String> list2=new ArrayList<>();
for(int i=0;i<10;i++){
    list2.add(""+i);    
    list.add(list2);
    list2.clear();
}

Écrit comme ça, bien qu'un objet puisse être réutilisé, Cependant, list stocke les références aux objets. Lorsque list2.clear(); list2 dans la liste sera également effacé, de sorte que le résultat final ne peut être qu'un tas de collections vides. .

2. La collection opposée à la collection la plus couramment utilisée : LinkedList

LinkedList et ArrayList sont complémentaires, donc les avantages d'ArrayList sont les inconvénients de LinkedList, et les les inconvénients d'ArrayList sont les avantages de LinkedList.

Caractéristiques : La position des éléments dans LinkedList est arbitraire, donc les opérations d'insertion et de suppression sont plus efficaces et l'efficacité des requêtes est moindre.

3. Ensembles opposés aux ensembles généraux : Vecteur

Pourquoi est-il dit opposé aux ensembles généraux ? Parce qu'il s'agit d'un ancien tableau dynamique, de nombreuses méthodes sont modifiées avec synchronisation, il est donc thread-safe, tandis que les collections générales ne le sont pas.

Caractéristiques : L'accès simultané par plusieurs threads ne produira pas de résultats incertains, mais son efficacité sera relativement faible. Vous pouvez l'utiliser si vous souhaitez prendre en compte la sécurité des threads.

4. La collection la plus couramment utilisée dans Set : HashSet

Lorsque j'utilise des collections Set, j'utilise presque toujours HashSet qui est implémenté à l'aide d'une table de hachage. les éléments de l'ensemble ne sont pas ordonnés et peuvent avoir des valeurs nulles, mais il ne peut pas y avoir d'éléments en double.

Caractéristiques : étant donné que les mêmes éléments ont le même hashCode, il ne peut pas y avoir d'éléments en double

5 Le deuxième ensemble le plus couramment utilisé dans Set : TreeSet

<.>TreeSet est un ensemble implémenté à l'aide d'une structure arborescente binaire

Caractéristiques : Les éléments de l'ensemble sont dans l'ordre, null n'est pas autorisé et les éléments en double ne sont pas autorisés.

6. La deuxième collection la plus couramment utilisée : HashMap

Nous rencontrons souvent des scénarios dans lesquels le stockage de paires clé-valeur est requis, et HashMap est la clé la plus couramment utilisée. valeur à la collection stockée.

Caractéristiques : HashMap autorise des valeurs de clé vides et n'est pas thread-safe, donc l'insertion, la suppression et le positionnement d'éléments seront plus rapides.

7. Certaines collections de cartes moins couramment utilisées : TreeMap, HashTable

TreeMap est implémenté sur la base d'arbres rouge-noir et convient pour déterminer l'ordre en fonction de l'ordre naturel. Clé de traversée.

HashTable est implémenté sur la base de HashCode, mais il est thread-safe, il est donc moins efficace que HashMap et les valeurs nulles ne sont pas autorisées.

Tutoriel recommandé :

Tutoriel Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Quand l’utiliser en Java ?Article suivant:Quand l’utiliser en Java ?