Collection Interface: Die Sammlung ist die grundlegendste Sammlungsschnittstelle und deklariert gemeinsame Methoden für Java -Sammlungen (einschließlich nur Set und Liste). Setzen und auflisten Sie sowohl die Verbindung als auch die Karte erben
Methoden der Sammlungsschnittstelle:
boolean add (Objekt O): Fügen Sie der Sammlung eine Referenz zu einem Objekt hinzu
void Clear (): Löschen Sie alle Objekte in der Sammlung, dh keine Verweise mehr auf diese Objekte enthalten
boolean isempty (): Bestimmt, ob das Set leer ist
Boolesche enthält (Objekt O): Bestimmt, ob eine Referenz auf ein bestimmtes Objekt in der Sammlung enthalten ist
Iterar Iterator (): Gibt ein Iterator -Objekt zurück, mit dem Elemente in einer Sammlung iteriert werden können
Boolesche Entfernen (Objekt O): Entfernt einen Verweis auf ein Objekt aus der Sammlung
int size (): Gibt die Anzahl der Elemente in der Sammlung zurück
Object [] toArray (): Gibt ein Array zurück, das alle Elemente in der Sammlung enthält
Über: Die Methoden Iterator () und ToArray () werden für alle Elemente einer Sammlung verwendet. Ersteres gibt ein Iteratorobjekt zurück und der letztere gibt ein Array zurück, das alle Elemente in der Sammlung enthält.
Die Iteratorschnittstelle deklariert die folgenden Methoden:
HasNext (): Bestimmt, ob die Elemente in der Sammlung durchquert wurden. Wenn nicht, kehren Sie wahr zurück
Weiter (): das nächste Element zurückgeben
remove (): Entfernen Sie das vorherige Element, das nach der nächsten () Methode aus der Sammlung zurückgegeben wurde.
Set (set): set ist die einfachste Art der Sammlung. Objekte in der Sammlung werden nicht auf eine bestimmte Weise sortiert, und es gibt keine doppelten Objekte. Die SET -Schnittstelle implementiert hauptsächlich zwei Implementierungsklassen:
Hashset: Die Hashset -Klasse verwendet den Hash -Algorithmus, um Objekte in der Sammlung zuzugreifen, und die Zugriffsgeschwindigkeit ist relativ schnell.
Treeset: Die TreeSet -Klasse implementiert die sortEdSet -Schnittstelle, die Objekte in der Sammlung sortieren kann.
Verwendung von SET: Es speichert Verweise auf Objekte, keine doppelten Objekte
Set set = new Hashset (); String s1 = new String ("Hallo"); String S2 = S1; String S3 = New String ("World"); set.add (s1); set.add (s2); set.add (s3); System.out.println (set.size ()); // Die Anzahl der Objekte in der Drucksammlung beträgt 2.
Wie bestimmt die Add () -Methode von SET, ob das Objekt in der Sammlung gespeichert wurde?
boolean isExists=false;Iterator iterator=set.iterator();while(it.hasNext()) {String oldStr=it.next();if(newStr.equals(oldStr)){isExists=true;}}Liste: Das Merkmal einer Liste ist, dass ihre Elemente linear gespeichert werden und doppelte Objekte in der Sammlung gespeichert werden können.
Zu den wichtigsten Implementierungsklassen der Listenschnittstelle gehören:
ArrayList (): stellt dar, dass die Länge in ein Array geändert werden kann. Auf Elemente kann zufällig zugegriffen werden, und die Geschwindigkeit des Einfügens und Löschens von Elementen in ArrayList () ist langsam.
LinkedList (): Verwendet eine verknüpfte Listendatenstruktur in der Implementierung. Schnellinsertion und Löschen, langsamer Zugang.
Für den zufälligen Zugriff der Liste soll nur zufällig Elemente an einem bestimmten Ort abgerufen werden. Die Liste der GET (int -Index) der Liste wird in das Objekt in der Sammlung an der in der Indexposition angegebenen Indexposition zurückgegeben, und das Index startet mit "0". Die grundlegendsten zwei Möglichkeiten, um alle Objekte in einer Sammlung abzurufen:
1: Für Schleife und Get () Methode:
für (int i = 0; i <list.size (); i ++) {System.out.println (list.get (i));}2: Iterator verwenden:
Iterator it = list.iterator (); while (it.hasnext) {System.out.println (it.Next);}
Karte: Karte ist eine Sammlung von Karten -Schlüsselobjekten und Wertobjekten. Jedes Element davon enthält ein Paar Schlüsselobjekte und Wertobjekte.
Wenn eine Karte nicht von der Sammlungsschnittstelle geerbt wird, wird das entsprechende Wertobjekt zurückgegeben, wenn ein Schlüsselobjekt angegeben ist.
Gemeinsame Methoden für die Karte:
1 Operationen hinzufügen und löschen:
Objekt Put (Objektschlüssel, Objektwert): Fügen Sie der Sammlung Elemente hinzu
Objektentfernung (Objektschlüssel): Entfernt Elemente im Zusammenhang mit der Schlüssel
Hohlraum Putall (Karte T): Fügt alle Elemente aus einem bestimmten Bild zum Bild hinzu
void clear (): Entfernen Sie alle Karten aus dem Bild
2 Abfrageoperationen:
Objekt GET (Objektschlüssel): Erhalten Sie den Wert, der sich auf den Schlüsselwortschlüssel bezieht. Die Schlüsselobjekte in der Kartensammlung dürfen nicht wiederholt werden, dh das Ergebnis von zwei wichtigen Schlüsselobjekten, die mit der Methode Equals () verglichen werden, ist falsch. Mehrere Schlüssel können jedoch ausschließlich auf dasselbe Wertobjekt abgebildet werden.
Verbindungen: Sammlung Dienstprogrammklasse. Verbindungen bieten praktische statische Methoden für Java -Sammlungen
Zusammenfassen:
Die grundlegende Verwendung von Java -Sammlungen wurde zusammengefasst. Die oben genannten sind die am häufigsten verwendeten Java -Sammlungen. Weitere Informationen finden Sie im JDK -Hilfsdokument. Haha, es gibt noch viele weitere Anwendungen der Karte, und das ist das. Connections bietet viele praktische Methoden für List /Map, was für die tägliche Entwicklung sehr nützlich ist.
Boolean enthälty (Objektschlüssel): Bestimmt, ob im Bild ein Schlüsselwortschlüssel vorhanden ist
Boolescher enthält einen Wert (Objektwert): Bestimmt, ob im Bild einen Wert vorhanden ist
int size (): Gibt die Anzahl der Karten im aktuellen Bild zurück
boolean isempty (): Bestimmt, ob im Bild eine Zuordnung vorliegt
List speichert Objekte in der Reihenfolge, in der Objekte eingeben, ohne zu sortieren oder zu bearbeiten. SET ist nur einmal für jedes Objekt akzeptiert und verwendet eine eigene interne Sortiermethode (normalerweise kümmert es Sie nur, ob ein Element zu Set gehört, nicht zu seiner Reihenfolge - sonst sollten Sie die Liste verwenden).
MAP speichert auch eine Kopie jedes Elements, dies basiert jedoch auf "Schlüssel", und die Karte hat auch integrierte Sortierungen, sodass sich die Reihenfolge, in der Elemente hinzugefügt werden, nicht wichtig ist. Wenn die Reihenfolge, in der Elemente hinzugefügt werden, für Sie wichtig ist, sollten Sie LinkedHashset oder LinkedHasMap verwenden.
Listenfunktionsmethode:
Es gibt tatsächlich zwei Typen: Einer ist die grundlegende ArrayList, die den Vorteil des Zufallszugriffs zu Elementen hat, und die andere ist die leistungsstärkere LinkedList, die nicht für den schnellen Zufallszugriff ausgelegt ist, sondern über eine allgemeinere Methode verfügt.
Liste: Reihenfolge ist das wichtigste Merkmal der Liste: Sie stellt sicher, dass die spezifische Reihenfolge der Elemente beibehalten wird. List fügt der Sammlung viele Methoden hinzu und ermöglicht das Einfügen und Entfernen von Elementen in die Mitte der Liste (dies wird nur für die LinkedList empfohlen). Eine Liste kann einen Listiterator generieren, mit dem sie die Liste aus zwei Anweisungen aus zwei Anweisungen durchqueren und einfügen und entfernen können.
ArrayList: List implementiert von Array. Ermöglicht einen schnellen Zufallszugriff auf Elemente, das Einfügen und Entfernen von Elementen in die Mitte der Liste ist jedoch langsam. ListIterator sollte nur verwendet werden, um die ArrayList von Back zum vorwärts zu iterieren, anstatt Elemente einzuführen und zu entfernen. Denn das ist viel teurer als LinkedList.
LinkedList: Der sequentielle Zugriff ist optimiert, und der Aufwand des Einfügens und Löschens in die Mitte der Liste ist nicht sehr hoch. Der Zufallszugriff ist relativ langsam. (Verwenden Sie stattdessen ArrayList.) Sie haben auch die folgenden Methoden: addfirst (), addlast (), getFirst (), getLast (), removeFirst () und removelast (). Diese Methoden (nicht in einer Schnittstelle oder Basisklasse definiert) werden die LinkedList als Stapel, Warteschlange und bidirektionale Warteschlange verwendet.
Die Funktionsmethode von Set:
SET hat genau die gleiche Schnittstelle wie die Sammlung, sodass im Gegensatz zu zwei verschiedenen Listen keine zusätzliche Funktionalität vorhanden ist. Tatsächlich ist SET eine Sammlung, aber das Verhalten ist anders. (Dies ist eine typische Anwendung von Vererbung und polymorphem Denken: unterschiedliche Verhaltensweisen ausführen.) Set speichert keine doppelten Elemente (was die Beurteilung der Elemente gleich ist, es ist verantwortlicher).
SET: Jedes im Satz gespeicherte Element muss eindeutig sein, da das Set keine doppelten Elemente speichert. Das zum Set hinzugefügte Element muss die Equals () -Methode definieren, um die Einzigartigkeit des Objekts zu gewährleisten. SET hat genau die gleiche Schnittstelle wie Sammlung. Die festgelegte Schnittstelle garantiert nicht die Reihenfolge der Wartungselemente.
Hashset: Set für Schnellsuche. Das im Hashset gespeicherte Objekt muss HashCode () definieren.
Treeset: In der Speicherreihenfolge ist die darunter liegende Schicht eine Baumstruktur. Verwenden Sie es, um geordnete Sequenzen aus dem SET zu extrahieren.
LinkedHashset: Hat die Abfragegeschwindigkeit von Hashset und verwendet intern die verlinkte Liste, um die Reihenfolge der Elemente (Einfügungsreihenfolge) zu verwalten. Wenn Sie also einen Iterator verwenden, um ein Set zu durchlaufen, werden die Ergebnisse in der Reihenfolge angezeigt, in der Elemente eingefügt werden.
Die Funktionsmethode der Karte:
Methode Put (Objektschlüssel, Objektwert) fügt einen "Wert" (etwas) und einen "Schlüssel" hinzu, der mit "Wert" zugeordnet ist (mit ihm zu finden). Die Methode GET (Objektschlüssel) gibt den "Wert" zurück, der dem angegebenen "Schlüssel" zugeordnet ist. Sie können enthaltende () verwenden und enthält value (), um zu testen, ob ein "Schlüssel" oder "Wert" in der Karte enthalten ist.
Die Standard -Java -Klassenbibliothek enthält mehrere verschiedene Karte: Hashmap, Treemap, LinkedHasMap, WeaPhashMap, IdentityHasMap. Sie alle haben die gleiche grundlegende Schnittstellenkarte, aber ihr Verhalten, Effizienz, Sortieren von Strategien, Rettung des Lebenszyklus von Objekten und die Bestimmung des Äquivalents von "Schlüssel".
Ausführungseffizienz ist ein großes Problem mit der Karte. Wenn Sie sich ansehen, was Get () tun wird, werden Sie verstehen, warum es ziemlich langsam ist, nach "Schlüssel" in ArrayList zu suchen. Und hier beschleunigt Hashmap. HashMap verwendet einen speziellen Wert, der als Hash -Code bezeichnet wird, um langsame Suche nach Schlüssel zu ersetzen.
"Has Code" ist "relativ einzigartig", um den int -Wert eines Objekts darzustellen, und er wird durch Konvertieren bestimmter Informationen des Objekts generiert. Alle Java -Objekte können Hash -Codes generieren, da HashCode () eine Methode ist, die im Basisklassenobjekt definiert ist.
HashMap verwendet den HashCode () des Objekts für schnelle Abfragen. Diese Methode kann die Leistung erheblich verbessern.
Karte: Behält die Korrelation von "Schlüsselwertpaaren" bei, damit Sie "Werte" durch "Schlüssel" finden können
HashMap: MAP basiert auf der Implementierung von Hash -Tabellen. Der Overhead des Einfügens und Abfragens von "Schlüsselwertpaaren" ist festgelegt. Der Kapazitätskapazitäts- und Lastfaktor -Lastfaktor kann über den Konstruktor eingestellt werden, um die Leistung des Behälters anzupassen.
LinkedHasMap: Ähnlich wie bei HashMap, aber wenn sie über sie iteriert, ist die Reihenfolge, in der das "Schlüsselwertpaar" seine Einfügungsreihenfolge ist, oder die Reihenfolge der am wenigsten verwendeten (LRU). Nur etwas langsamer als Hashmap. Es ist schneller zu senden, wenn iterativ zugegriffen wird, da verknüpfte Listen verwendet werden, um die interne Reihenfolge zu verwalten.
Treemap: Implementierung basierend auf der roten und schwarzen Baumdatenstruktur. Wenn Sie sich "Schlüssel" oder "Schlüsselwertpaare" ansehen, werden sie sortiert (die Reihenfolge wird durch Vergleichsel oder Vergleicher bestimmt). Treemap ist durch die Tatsache gekennzeichnet, dass die Ergebnisse, die Sie erhalten, sortiert sind. Treemap ist die einzige Karte mit der SubMap () -Methode, mit der ein Subbaum zurückgegeben werden kann.
WeepHashMap: Schwache Schlüsselkarte, auf der Karte verwendete Objekte dürfen ebenfalls freigegeben werden: Dies ist so konzipiert, dass sie besondere Probleme lösen. Wenn keine Referenz außerhalb der Karte auf einen "Schlüssel" zeigt, kann dieser "Schlüssel" vom Müllsammler recycelt werden.
Identifizieren SiehashMap: Verwendung == anstelle von Equals (), um "Schlüssel" zu vergleichen. Speziell entwickelt, um besondere Probleme zu lösen.