Maison >Java >javaDidacticiel >Quelles sont les différences entre les classes d'implémentation de collections couramment utilisées ?

Quelles sont les différences entre les classes d'implémentation de collections couramment utilisées ?

零下一度
零下一度original
2017-06-25 10:32:355874parcourir

1. Qu'est-ce qu'une collection

La collection est l'incarnation de l'orientation objet réutilisabilité , Généralement, nous appelons les objets de recherche des éléments ; la totalité de certains éléments est appelée un ensemble, également appelé ensemble.

2. Caractéristiques des éléments d'un ensemble

(1) Déterminisme : Soit A un ensemble donné, x est un objet spécifique, alors il est soit un élément de A, soit non un élément de A. Une et une seule des deux situations doit être vraie (2) Mutualité : Un élément dans un ensemble donné signifie qu'il appartient à ces différents individus. (objets) d'un ensemble, par conséquent, le même élément ne doit pas apparaître de manière répétée dans le même ensemble. (3) Désordre : généralement, l'ordre entre les éléments n'est pas pris en compte, mais lors de l'expression d'ensembles spéciaux tels que des séquences, il est généralement écrit dans le sens habituel. ordre de l'axe des nombres de petit à grand

classe de mise en œuvre de la collection

ArrayList méthode d'implémentation : implémentation de tableau Version : 1.2 Heure : sortie en décembre 1998 Léger (exécution rapide) Thread dangereux (couramment utilisé)
Vector Méthode d'implémentation : implémentation de tableau Version : 1.0 Heure : Sorti en mai 1995 Heavyweight (fonctionne lentement) Thread-safe
Méthode d'implémentation de LinkedList : implémentation de liste chaînée
Tableau : espace continu, vitesse de requête rapide, accès direct aux indices, ajout et suppression lents, ajout et suppression nécessaires pour déplacer les données suivantes vers l'arrière ou vers l'avant
liste chaînée : nœud association, la vitesse de requête est lente, utilisez la précédente pour trouver la suivante, ajoutez et supprimez la liste de liens rapides, pointez directement la précédente vers les nouvelles données et la suivante pointe également vers les nouvelles données

Implémentation vectorielle Pile de classes Pile LIFO (Last In First Out) Requête moins ajouter et supprimer plus

3. Comment implémenter une pile en Java

a.Array b.LinkedList c.Stack class

Utilisez LinkedList, pourquoi ne pas utiliser Stack pour implémenter la classe ? Parce que Stack hérite du mauvais héritage de Vector, Vector fournit la méthode add, mais la pile ne peut que sauter et pousser et ne peut pas être insérée à partir du milieu, ce qui rend la pile dangereuse. . Stack hérite de Vector, donc Stack possède de nombreuses méthodes qui ne devraient pas exister.

 1 //用java创建一个栈 2 public class AStack { 3 public static void main(String[] args) { 4     Stacks s = new Stacks(); 5     s.push("lin"); 6     s.push("hello"); 7     s.push("hou"); 8     s.push(123); 9     System.out.println(s.pop());10     System.out.println(s.pop());11     System.out.println(s.pop());12     System.out.println(s.pop());13 }14 }15 class Stacks{16     //变继承复用为主核复用17     private LinkedList list = new LinkedList();18     public void push(Object o){19         list.addFirst(o);20     }21     public  Object pop(){22         Object o = list.removeFirst();23         return o;24     }25 }

Collection de cartes

Élément : paire clé - valeur (valeur clé À droite)

Caractéristiques : Le contenu de la clé est unique et la valeur correspondante correspondant à la clé est répétable et non ordonné

Utilisation : Rechercher une valeur par clé

Exemple : Mot du dictionnaire - explicationNom d'utilisateur du site Web - mot de passe

Méthode principale :

1.put (Object k, Object v) : Mettez la paire clé-valeur k-v dans la carte Si k existe déjà, le nouveau v remplacera l'ancien v

2.get(Object k) : Return v

3.remove(Objeck k) : Supprime l'objet où se trouve k Paire clé-valeur

4.containsKey(Object k) : Déterminer si K existe dans la carte

5.containsValue(Object v) : Déterminer si v existe dans la carte

Carte 3 types de parcours

1. Traversée de valeurs

1   Collection c = map.values();2    Iterator i =  c.iterator();3      while(i.hasNext()){4        System.out.println(i.next());5     }

2. 🎜>

1         Set s = map.keySet();2         Iterator i =  s.iterator();3         while(i.hasNext()){4             Object k = i.next();5             Object v = map.get(k);6             System.out.println(k+"+++"+v);7         }
3. Parcours des valeurs clés

L'objet Map.Entry encapsule une clé et une valeur

Classe d'implémentation :

1.HashMap : 1.2 autorise null comme clé ou valeur

2.Hashtable : 1.0 n'autorise pas null comme clé ou valeur
3.Propriétés : les sous-classes de Hashtable à la fois la clé et la valeur La chaîne est généralement utilisé pour lire les fichiers de configuration

4.TreeMap : implémente SortcdMap (sous-interface de Map) pour trier automatiquement les clés

------------------------------------------------------- - ------------------------------------------------- - ------------------------------------------------- - ----- Si ce qui précède est faux, j'invite les experts à signaler les erreurs. Si vous souhaitez communiquer, veuillez envoyer un e-mail à mon adresse e-mail 1206835721@qq. com

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