(I) Sammlung und Sammlungen
Beide befinden sich im Java.util -Paket, der Unterschied ist:
Die Sammlung ist eine Sammelschnittstelle mit gängigen Subinterfaces wie ListSet und der erste Knoten des Collection Framework -Diagramms. Es bietet eine Reihe von Methoden zur Ausführung grundlegender Operationen für Sammelobjekte.
Gemeinsame Methoden sind:
boolean add (e e) dem Behälter Elemente hinzufügen; int size () gibt die Anzahl der Elemente der Sammlung zurück; boolean isempty () bestimmt, ob der Behälter leer ist; Boolean enthält (Objekt O), wenn diese Sammlung das angegebene Element enthält, es true zurückgibt, und die Equals () -Methode wird hier verwendet. Boolesche Entfernen (Objekt O) entfernt die Instanz des angegebenen Elements; usw.
Collections ist eine Wrapper -Klasse, die verschiedene statische polymorphe Methoden für Sammlungsoperationen enthält, die polymorphe Algorithmen enthält, die auf Sammlung betrieben werden, d. H. "Wrapper", das eine neue Sammlung zurückgibt, die von der angegebenen Sammlung unterstützt wird, und einige andere Dinge.
Gemeinsame Methoden sind:
Void Sort (List) sortiert den Inhalt der Liste.
Es ist hier zu beachten, dass (PS: Die folgende Erklärung zu Sort () wird aus einer kurzen Diskussion über Objektarray oder Listen -Sortierungs- und Sammlungssortierprinzipien ausgewählt. Es zeichnet den Ursprung der Listen- und Sammlungssortierung nach und schreibt sie sehr deutlich)
Die Sortierkörper in dieser sort () -Funktion ist Arrays.sort ().
@SuppressWarnings ("Unbeschwertet") öffentliche statische <t erweitert vergleichbar <? Super t >> void sort (list <t> list) {Object [] array = list.toArray (); Arrays.sort (Array); int i = 0; ListIterator <T> iT = list.listIterator (); while (it.hasnext ()) {it.Next (); it.set ((t) Array [i ++]); }} In arrays.sort () ist ersichtlich, dass es durch vergleichabletimsort.sort (Object [] a) implementiert wird: public static void sort (Object [] Array) {// mit Android-veränderte Vergleiche-Vergleiche (Array) beginnen; // Ende von Android-Changed} beenden} statische Hohlraumsortierung (Objekt [] a) zu statischer Hohlraumsortierung (Objekt [] a, int lo, int hi) zu privaten statischen Hohlraum -Binarysort (Objekt [] a, int lo, int hi, int start). In BinarySort ist der für den Größenvergleich verwendete Teil: Vergleichbar <elements> pivot = (vergleichbar) a [start]; int links = lo; int rechts = Start; links <= rechts behaupten; while (links <rechts) {int Mid = (links + rechts) >>> 1; if (pivot.comPareto (a [Mid]) <0) rechts = mid; sonst links = Mid + 1; }Die einzige Methode der vergleichbaren Schnittstelle wird in der binären Suche verwendet: vergleicheto (). Wenn alle benutzerdefinierten Klassen in den Container geladen werden und verglichen werden müssen, müssen Sie die vergleichbare Schnittstelle implementieren oder die Komparatorklasse erben und die Vergleiche () -Methode überschreiben.
Int BinarySearch (List-Objekt) Für sequentielle Listen-Container wird die Halbfindungsmethode verwendet, um das angegebene Objekt zu finden. void Reverse (Liste) ordnet die Objekte im Listencontainer in umgekehrter Reihenfolge an. usw.
(Ii) Iterator und iterbar
Erstens befindet sich das iterable unter dem Paket java.lang, und der Iterator befindet sich unter dem Java.util -Paket. Im Sammelframework werden drei Methoden in der Iterator -Schnittstelle definiert: boolean hasNext (); e next (); void remove (). Iterable definiert nur eine Methode: Iterator (), der Rückgabewert ist ein Objekt, das die Iteratorschnittstelle implementiert. Die Sammlung erbt die Super -Schnittstelle von iterierbar, sodass alle Implementierungsklassen im Sammelgerüst die Iterator () -Methode und das Polymorphismus ermöglichen, dass die Referenz des Iterators auf das Teil (dh diese drei Methoden) in der aktuellen Sammlung zugreifen kann, die Iterator implementiert. Wenn Sie zu diesem Zeitpunkt Elemente löschen müssen, da Iterator die Verriegelung in diesem Sammelvorgang abschließt, können Sie während der Schleifenquelle nur die Iterator -Methode des Iterators mit Iterator verwenden und können die eigene REM -Methode (Objekt) der Sammlung nicht verwenden.
Warum müssen wir die iterbare Schnittstelle implementieren? Warum nicht die Iteratorschnittstelle direkt implementieren? Auf diese Weise kann die Sammelklasse diese drei Methoden direkt erben?
Schauen Sie sich die Sammlungskurse in JDK an, z. B. die List -Familie oder die SET -Familie, die die iterbare Schnittstelle implementieren, aber die Iterator -Schnittstelle nicht direkt implementieren.
Denken Sie sorgfältig darüber nach und machen Sie Sinn.
Denn die Kernmethoden der Iterator -Schnittstelle als nächstes () oder HasNext () hängen von der aktuellen Iterationsposition des Iterators ab.
Wenn die Sammlung die Iteratorschnittstelle direkt implementiert, führt sie zwangsläufig zum Sammlungsobjekt, das die Daten (Zeiger) der aktuellen Iterationsposition enthält.
Wenn eine Sammlung zwischen verschiedenen Methoden übergeben wird, wird das Ergebnis der nächsten () -Methode nicht voreingestaltet, da die aktuelle Iterationsposition nicht voreingestellt ist.
Es sei denn, eine reset () -Methode wird der Iteratorschnittstelle hinzugefügt, um die aktuelle Iterationsposition zurückzusetzen.
In diesem Fall kann die Sammlung jedoch nur einen aktuellen Iterationsstandort gleichzeitig haben.
Iterbar ist nicht der Fall, und jeder Anruf gibt einen Iterator zurück, der von Grund auf neu zählt.
Mehrere Iteratoren stören sich nicht miteinander.
Der obige Artikel basiert auf einigen verwirrenden Wissenspunkten (detaillierte Erklärung) in der Java -Sammlung. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.