Maison  >  Article  >  Java  >  Quelles sont les collections uniques en Java ?

Quelles sont les collections uniques en Java ?

尚
original
2019-12-27 09:47:1321255parcourir

Quelles sont les collections uniques en Java ?

La classe de collection Java est stockée dans le package java.util et est un conteneur utilisé pour stocker des objets. Jetons un coup d'œil aux collections non dupliquées en Java.

Set : Une implémentation typique de HashSet() est un ensemble non ordonné et non répétable

1. > ①. HashSet : l'ordre des éléments ne peut pas être garanti ; il n'est pas répétable ; il n'est pas thread-safe ; les éléments définis peuvent être NULL ; sa couche inférieure est en fait un tableau ; , et son but est d'accélérer la requête. Nous savons que dans un tableau général, la position d'index de l'élément dans le tableau est aléatoire et qu'il n'y a pas de relation définie entre la valeur de l'élément et la position de l'élément. Par conséquent, lors de la recherche d'une valeur spécifique dans le tableau. , vous devez modifier la valeur de recherche Comparer avec une série d'éléments. L'efficacité de la requête à ce stade dépend du nombre de comparaisons au cours du processus de recherche. L'index et la valeur du tableau sous-jacent de la collection HashSet ont une certaine relation : index=hash(value), il vous suffit alors d'appeler cette formule pour trouver rapidement l'élément ou l'index.


③.Pour HashSet : si deux objets renvoient true via la méthode equals(), les valeurs hashCode des deux objets doivent également être les mêmes.


2. Set linkedHashSet = new LinkedHashSet();

①, ne peut pas être répété, ordonné

car la couche sous-jacente utilise des listes chaînées et du hachage algorithme de tables. La liste chaînée garantit l'ordre dans lequel les éléments sont ajoutés et la table de hachage garantit l'unicité des éléments

3 Set treeSet = new TreeSet();

TreeSet: ordonné; non répétable, utilisé en bas L'algorithme d'arbre rouge-noir est bon pour les requêtes de plage.


* Si vous utilisez le constructeur sans paramètre TreeSet() pour créer un objet TreeSet, la classe des éléments qui y sont placés doit implémenter l'interface Comparable. Par conséquent, les éléments nuls ne peuvent pas y être placés.


Comparaison des classes d'implémentation des trois interfaces Set ci-dessus :

Points communs :

1. La duplication d'éléments n'est pas autorisée

2. Tout Ce n'est pas une classe thread-safe Solution : Set set = Collections.synchronizedSet(set object)

Différence :

HashSet : L'ordre d'ajout des éléments n'est pas garanti, et la couche inférieure utilise un algorithme de table de hachage. L'efficacité des requêtes est élevée. Pour déterminer si deux éléments sont égaux, la méthode equals() renvoie true et les valeurs hashCode() sont égales. C'est-à-dire que les éléments stockés dans HashSet doivent couvrir la méthode equals() et la méthode hashCode()

LinkedHashSet : une sous-classe de HashSet. La couche inférieure utilise un algorithme de table de hachage et une liste chaînée. algorithme, qui garantit que les éléments L'ordre d'addition garantit également l'efficacité des requêtes. Cependant, les performances globales sont inférieures à celles de HashSet.


TreeSet : l'ordre d'ajout des éléments n'est pas garanti, mais les éléments de l'ensemble seront triés. La couche inférieure utilise un algorithme d'arbre rouge-noir (la structure arborescente est plus adaptée aux requêtes de plage)


Carte : paire clé-valeur, la clé ne peut pas être répétée et la valeur peut être


1. À proprement parler, Map n'est pas un ensemble, mais une relation cartographique entre deux ensembles.

2. Chaque donnée de ces deux collections a une relation cartographique, et nous pouvons la considérer comme une donnée. C'est Entry (clé, valeur). La carte peut être considérée comme composée de plusieurs entrées.

3. Étant donné que la collection Map n'implémente pas l'interface Collection, ni l'interface Iterable, le parcours for-each ne peut donc pas être effectué sur la collection Map.

Pour plus de connaissances sur Java, veuillez faire attention à la colonne
Tutoriel de base 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