Java - Collection et collection de cartes

Présentation des collections Java

insérez la description de l'image ici

Une collection peut être considérée comme un conteneur pour stocker des informations sur un objet. Toutes les classes de collection se trouvent dans le package java.util, mais les classes de collection qui prennent en charge le multithreading se trouvent dans le package java.util.concurrent.

La classe de collection de Java est principalement dérivée de deux interfaces racine, à savoir Collection et Map.

Les classes de collection en Java peuvent être divisées en deux catégories : l'une consiste à implémenter l'interface Collection ; l'autre consiste à implémenter l'interface Map

Collection est une interface de collection de base, qui peut accueillir un ensemble d'éléments de collection (Element).

Map n'hérite pas de l'interface Collection et entretient une relation parallèle avec Collection. Map fournit un mappage de la clé à la valeur. Une carte ne peut pas contenir la même clé, et chaque clé ne peut correspondre qu'à une seule valeur.

1. Collecte

1. Sous-interfaces et classes d'implémentation de l'interface Collection

Les sous-interfaces de l'interface Collection incluent : l'interface Set et l'interface List

Les classes d'implémentation de l'interface Set incluent principalement : HashSet , TreeSet , LinkedHashSet , etc.

Les classes d'implémentation de l'interface List incluent principalement : ArrayList , LinkedList , Stack et Vector , etc.

List exprime une collection ordonnée. Chaque élément de la liste possède un index. L'utilisation de cette interface permet de contrôler avec précision la position d'insertion de chaque élément. Les utilisateurs peuvent également utiliser l'index pour accéder aux éléments de la liste, qui est similaire au tableau de Java.

La caractéristique de l'interface Set est qu'elle ne peut pas contenir d'éléments en double. Pour deux éléments element1 et element2 dans Set, elementl.equals(element2) = false. En outre, Set a au plus un élément nul. Cette interface imite le concept mathématique des ensembles. 

La couche inférieure de ArrayList est un tableau

La couche inférieure de LinkedList est une liste doublement liée

La couche inférieure de LinkedHashSet est LinkedHashMap

La couche inférieure de HashSet est HashMap

La couche inférieure de TreeSet est TreeMap

Si les éléments de stockage sont commandés Si l'élément de stockage est répétable
Liste (liste) ordonné répétable
File d'attente ordonné répétable
Ensemble (ensemble) hors service non répétable

La collection est une collection mono-colonne : chaque élément est un individu distinct

La figure ci-dessous est tirée du nœud de puissance - M. Du

 1. Collecte de listes

(1)ArrayList

La structure de données sous-jacente est un tableau ;

Requête rapide, ajout et suppression lents

Filetage dangereux, haute efficacité.

(2)Liste Liée

La structure de données sous-jacente est une liste chaînée

La requête est lente, et l'ajout et la suppression sont rapides.

Filetage dangereux, haute efficacité.

(3)Vecteur

La structure de données sous-jacente est un tableau,

Requête rapide, ajout et suppression lents.

Thread safe, faible efficacité.

(4) Pile

C'est la classe d'implémentation de Vector, qui implémente une pile dernier entré, premier sorti.

Stack fournit cinq méthodes supplémentaires qui permettent à Vector d'être utilisé comme une pile. Les méthodes push et pop, ainsi que la méthode peek obtiennent les éléments de la pile, la méthode empty teste si la pile est vide et la méthode search vérifie la position d'un élément dans la pile. Une pile est une pile vide juste après sa création.

2. Collecte de la file d'attente

Une file d'attente est une table linéaire spéciale qui n'autorise les suppressions qu'au début de la table et les insertions à la fin de la table.

La classe Deque est la classe d'implémentation de Queue. La classe LinkedList implémente à la fois l'interface List et l'interface Deque (implémente également l'interface Queue). L'interface Queue limite l'accès aux méthodes LinkedList, c'est-à-dire que si le type de paramètre dans la méthode est Queue, elle ne peut accéder qu'aux méthodes définies par l'interface Queue, mais ne peut pas accéder directement aux méthodes non-Queue de LinkedList. afin que seule la méthode appropriée puisse être utilisée.

3. Définir la collecte

(1) Classe HashSet

La structure de données sous-jacente est une table de hachage.

Les performances d'accès et de recherche sont bonnes.

La valeur de l'élément de collection peut être nulle

(2)Ensemble de hachage lié

C'est une sous-classe de HashSet et a les caractéristiques de HashSet.

La structure de données sous-jacente est une liste chaînée et une table de hachage. La liste chaînée maintient l'ordre des éléments, et l'ordre des éléments est cohérent avec l'ordre dans lequel ils ont été ajoutés. L'unicité des éléments est garantie par la table de hachage.

(3)ArbreEnsemble

La structure de données sous-jacente est un arbre binaire, qui est la classe d'implémentation de l'interface SortedSet, qui peut garantir que les éléments sont dans un état trié.

TreeSet prend en charge deux types de tri d'éléments : le tri naturel et le tri d'objets personnalisé.

2. Carte

Les classes d'implémentation de l'interface Map incluent principalement : HashMap, TreeMap , Hashtable , ConcurrentHashMap et Properties, etc.

L'interface Map utilise la méthode de stockage de la paire clé-valeur Map<k,v> pour stocker les données avec une relation de mappage. Par conséquent, la collection Map stocke deux

Valeur de groupe, un groupe de valeurs est utilisé pour enregistrer la clé dans la carte, et un autre groupe de valeurs est utilisé pour enregistrer la valeur dans la carte, la clé et la valeur peuvent être

Il s'agit de n'importe quel type de données, la valeur de la clé n'autorise pas la duplication et peut être nulle. S'il existe déjà des doublons dans la carte lors de l'ajout de paires clé-valeur

clé, la valeur nouvellement ajoutée écrasera la valeur correspondante d'origine

Le principe sous-jacent de HashMap est le même que celui de HashTable. Après la version Java 8 , si la collision de hachage à la même position est supérieure à 8 , la liste chaînée devient un arbre rouge-noir

La couche inférieure de HashTable est une table de hachage composée d'une méthode d'adresse de chaîne (c'est-à-dire tableau + liste liée à un seul élément)

La couche inférieure de LinkedHashMap est modifiée à partir de HashMap, qui contient une liste à double lien qui maintient l'ordre d'insertion

La couche inférieure de TreeMap est un arbre rouge-noir

Map est une collection à double colonne : chaque élément est une paire de données, et la paire de données est traitée comme un tout pour fonctionner

La figure ci-dessous est tirée du nœud de puissance - M. Du

1、HashTable与HashMap

HashMap et HashTable sont deux implémentations typiques de l'interface Map, et la relation entre elles est complètement similaire à ArrayList et Vertor. HashTable est une ancienne classe d'implémentation Map. Les méthodes qu'elle fournit sont lourdes et ne sont pratiquement pas utilisées à l'heure actuelle.

Le thread HashMap n'est pas sûr, le thread HashTable est sûr.

HashMap est généralement plus rapide que HashTable

La clé et la valeur de HashMap peuvent être des valeurs nulles. HashTable n'autorise pas l'utilisation de valeurs Null comme clé et valeur. Si null est placé dans HashTable, une exception de pointeur null se produira.

2. Classe LinkedHashMap

LinkedHashMap utilise une liste doublement chaînée pour maintenir l'ordre des paires clé-valeur (en fait, seul l'ordre des clés doit être pris en compte). La liste chaînée est responsable du maintien de l'ordre d'itération de la carte, qui est cohérent avec l'insertion ordre, donc les performances sont inférieures à celles de HashMap, mais l'accès itératif aux éléments de la carte Tous les éléments ont de meilleures performances.

3. Classe de propriétés

La classe Properties est une sous-classe de la classe Hashtable, qui équivaut à une Map dont la clé et la valeur sont toutes deux de type String, et est principalement utilisée pour lire les fichiers de configuration.

4. Classe TreeMap

TreeMap est la classe d'implémentation de SortedMap, qui est une structure de données d'arbre binaire, et chaque paire clé-valeur est utilisée comme nœud de l'arbre binaire. Lorsque TreeMap stocke des paires clé-valeur, il doit trier les nœuds en fonction de la clé. TreeMap dispose également de deux méthodes de tri :

Tri naturel : toutes les clés du TreeMap doivent implémenter l'interface Comparable, et toutes les clés doivent être des objets de la même classe, sinon une ClassCastException sera levée.

Tri personnalisé des objets personnalisés : lors de la création d'un TreeMap, un objet Comparator est transmis, qui est responsable du tri de toutes les clés dans le TreeMap.

Je suppose que tu aimes

Origine blog.csdn.net/MinggeQingchun/article/details/121224068
conseillé
Classement