Heim >Java >javaLernprogramm >Was sind die Unterschiede zwischen häufig verwendeten Implementierungsklassen von Sammlungen?

Was sind die Unterschiede zwischen häufig verwendeten Implementierungsklassen von Sammlungen?

零下一度
零下一度Original
2017-06-25 10:32:355873Durchsuche

1. Was ist eine Sammlung?

Sammlung ist die Verkörperung von Objektorientierung Wiederverwendbarkeit, Im Allgemeinen bezeichnen wir die Forschungsobjekte als Elemente. Die Gesamtheit einiger Elemente wird als Menge bezeichnet.

2. Eigenschaften von Mengenelementen

(1) Determinismus: Sei A eine gegebene Menge, x ist ein bestimmtes Objekt, dann ist es entweder ein Element von A oder kein Element von A. Eine und nur eine der beiden Situationen muss wahr sein (2) Gegenseitigkeit: Ein Element in einer bestimmten Menge bedeutet, dass es zu diesen verschiedenen Individuen gehört (Objekte) einer Menge, daher sollte dasselbe Element nicht wiederholt in derselben Menge vorkommen. (3) Unordnung: Im Allgemeinen wird die Reihenfolge zwischen Elementen nicht berücksichtigt, aber wenn spezielle Mengen wie Sequenzen ausgedrückt werden, wird sie normalerweise in der üblichen Weise geschrieben Reihenfolge der Zahlenachse von klein nach groß

Collection Collection Implementation Class

ArrayList Implementierungsmethode: Array-Implementierung Version: 1.2 Zeit: Veröffentlicht im Dezember 1998 Leicht (schnell ausgeführt) Thread unsicher (häufig verwendet)
Vektor-Implementierungsmethode: Array-Implementierung Version: 1.0 Zeit : Veröffentlicht im Mai 1995 Schwergewicht (läuft langsam) Thread-sicher
LinkedList-Implementierungsmethode: Linked-List-Implementierung
Array: kontinuierlicher Speicherplatz, schnelle Abfragegeschwindigkeit, direkter Zugriff auf Indizes, langsames Hinzufügen und Löschen, Hinzufügen und Löschen müssen die folgenden Daten vorwärts oder rückwärts verschieben
verknüpfte Liste: Knoten Assoziation, Abfragegeschwindigkeit ist langsam, verwenden Sie die vorherige, um die nächste zu finden, fügen Sie die schnell verknüpfte Liste hinzu und löschen Sie sie, verweisen Sie die vorherige direkt auf die neuen Daten und die nächste zeigt auch auf die neuen Daten

Vektorimplementierung Klasse Stack Stack LIFO (Last In First Out) Abfragen weniger hinzufügen und löschen mehr

3. So implementieren Sie einen Stapel in Java

a.Array b.LinkedList c.Stack-Klasse

Verwenden Sie LinkedList. Warum nicht Stack verwenden, um die Klasse zu implementieren? Da Stack das falsche von Vector erbt, stellt Vector die Add-Methode bereit, aber der Stack kann nur Pop und Push und nicht aus der Mitte eingefügt werden, was den Stack unsicher macht . Stack erbt Vector, daher verfügt Stack über viele Methoden, die nicht existieren sollten.

 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 }

Kartensammlung

Element: Schlüssel-Wert-Paar (Schlüsselwert Rechts)

Merkmale: Der Schlüsselinhalt ist eindeutig und der entsprechende Wert, der dem Schlüssel entspricht, ist wiederholbar und ungeordnet

Verwendung: Wert anhand des Schlüssels finden

Beispiel: Wörterbuchwort - ErklärungWebsite-Benutzername - Passwort

Hauptmethode:

1.put (Objekt k, Objekt v): Fügen Sie das Schlüssel-Wert-Paar k-v in die Karte ein. Wenn k bereits vorhanden ist, ersetzt das neue v das alte v

2.get(Object k): Gibt v zurück

3.remove(Objeck k): Lösche das Objekt, in dem sich k befindet Schlüssel-Wert-Paar

4.containsKey(Object k): Bestimmen Sie, ob K in der Karte vorhanden ist

5.containsValue(Object v): Bestimmen Sie, ob v in der Karte vorhanden ist

Karte 3 Arten der Durchquerung

1. Wertdurchquerung

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. Schlüsselwertdurchquerung

Das Map.Entry-Objekt kapselt einen Schlüssel und einen Wert

Implementierungsklasse:

1.HashMap: 1.2 erlaubt null als Schlüssel oder Wert

2.Hashtable: 1.0 erlaubt keine Null als Schlüssel oder Wert
3.Eigenschaften: Hashtable-Unterklassen sowohl Schlüssel als auch Wert. String ist im Allgemeinen Wird zum Lesen von Konfigurationsdateien verwendet

4.TreeMap: Implementiert SortcdMap (Unterschnittstelle von Map), um Schlüssel automatisch zu sortieren

-------------------------------------------------------- - ------------------------------------------------- - ------------------------------------------------- - ----- Wenn das oben Genannte falsch ist, freue ich mich über Experten, die auf die Fehler hinweisen. Wenn Sie kommunizieren möchten, senden Sie bitte eine E-Mail an meine E-Mail-Adresse 1206835721@qq. com

Das obige ist der detaillierte Inhalt vonWas sind die Unterschiede zwischen häufig verwendeten Implementierungsklassen von Sammlungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn