1. ArrayListKlasse

Heute werden wir die ArrayListKlasse erkunden. Dies ist die erste von mehreren Klassen, die als Sammlungen bekannt sind . In Java sind Sammlungen ein so umfassendes und nützliches Thema, dass ihnen eine ganze CodeGym-Suche gewidmet ist.

Um die Struktur von Sammlungen und alle ihre Nuancen vollständig zu verstehen, müssen Sie zunächst OOP, Schnittstellen, Vererbung, die Grundlagen des Multithreadings und vieles mehr erlernen.

Deshalb machen wir uns heute mit der einfachsten Art der Sammlung vertraut. Aber auf einer ausreichend tiefen Ebene, damit Sie verstehen, wie man es benutzt und wie es funktioniert. Dann lernen Sie die ArrayListSammlung kennen .

Die Hintergrundgeschichte

Ich beginne mit einem kleinen Hintergrund. Programmierern gefiel ein Aspekt von Arrays wirklich nicht: die Tatsache, dass ihre Größe nicht geändert werden kann. Was ist, wenn Sie drei weitere Elemente in einem Array speichern müssen, aber nur eine leere Zelle vorhanden ist?

Die einzige Lösung für die Platzbeschränkungen eines Arrays bestand darin, ein sehr großes Array zu erstellen, um alle Elemente unterzubringen, die Sie möglicherweise speichern müssen. Aber das war normalerweise eine Verschwendung von Erinnerung. Wenn ein Array normalerweise zwei oder drei Elemente enthielt, aber auch nur die geringste Chance bestand, dass 100 davon gespeichert werden müssten, musste ein Array mit einer Speicherkapazität von 100 erstellt werden.

Was haben sich Programmierer ausgedacht? Sie haben die ArrayListKlasse geschrieben, die die gleiche Arbeit wie die ArrayKlasse leistete, jedoch in der Größe veränderbar war.

ArrayList-Klasse

Der Name der ArrayListKlasse setzt sich aus zwei Wörtern zusammen: Array + List. Arrayist ein Array und Listeine Liste.

Jedes ArrayListObjekt enthält ein gewöhnliches Array von Elementen. Wenn Sie Elemente aus einem lesen ArrayList, ruft das Objekt sie aus seinem internen Array ab. Wenn Sie Elemente schreiben, werden diese in das interne Array geschrieben.

Der ArrayList-Klasse fehlen alle Nachteile, die Arrays haben. Es weiß, wie man:

  • Speichern Sie Elemente eines bestimmten Typs
  • Ändern Sie die Größe der Liste dynamisch
  • Fügen Sie Elemente am Ende der Liste hinzu
  • Fügen Sie Elemente am Anfang oder in der Mitte der Liste ein
  • Entfernen Sie Elemente an einer beliebigen Stelle in der Liste

Weitere Einzelheiten finden Sie unten:


ArrayList2. Ein Objekt erstellen

Um ein ArrayListObjekt zu erstellen, müssen Sie Code wie diesen schreiben:

ArrayList<TypeParameter> name = new ArrayList<TypeParameter>();

Dabei ArrayListhandelt es sich um den Sammlungstyp/die Sammlungsklasse, TypeParameterum den Typ der in der ArrayListSammlung gespeicherten Elemente und nameum den Namen einer ArrayList<TypeParameter>Variablen.

Die nameVariable hat einen generischen Typ. Es besteht aus zwei Typen: Zuerst wird der Typ der Sammlung angegeben, und dann werden spitze Klammern verwendet, um den Typ der in der Sammlung gespeicherten Elemente anzugeben.

Beispiele:

Code Beschreibung
ArrayList<Integer> list = new ArrayList<Integer>();
Liste von ganzen Zahlen
ArrayList<String> list = new ArrayList<String>();
Liste der Zeichenfolgen
ArrayList<Double> list = new ArrayList<Double>();
Liste reeller Zahlen

Im Gegensatz zu Arrays können Sammlungen keine primitiven Typen speichern, sondern nur Referenztypen . Wenn Sie also eine Sammlung von ints benötigen, verwenden Sie Integerstattdessen die Wrapper-Klasse.


3. Operationen mit einemArrayList

Die Länge der neu erstellten Liste beträgt zunächst Null, da sie 0 Elemente enthält. Wenn Sie der Liste ein Element hinzufügen, erhöht sich seine Länge um 1. Wenn Sie das hinzugefügte Element entfernen, verringert sich die Länge wieder auf Null.

In der folgenden Tabelle erfahren Sie mehr über die Methoden des ArrayListKurses:

Methoden Beschreibung
void add(Type value)
Fügt das übergebene Element zur Liste hinzu
void add(int index, Type value)
Fügt ein Element an einer bestimmten Stelle in der Liste hinzu.
Type get(int index)
Gibt das Element zurück, dessen Index istindex
void set(int index, Type value)
Weist valuedem Element zu, dessen Index istindex
Type remove(int index)
Entfernt das Element, dessen Index ist index. Gibt das entfernte Element zurück.
Type remove(Type value)
Entfernt das Element, das Sie an die Methode übergeben. Wenn es mehr als ein solches Element gibt, wird das erste entfernt.
void clear()
Löscht die Liste, dh entfernt alle Elemente aus der Liste.
boolean contains(Type value)
Prüft, ob die Liste enthält value.
boolean isEmpty()
Prüft, ob die Liste leer ist oder nicht. Mit anderen Worten, ob die Länge der Liste Null ist.
int size()
Gibt die Größe der Liste zurück, also die Anzahl der Elemente in der Liste.
Type[] toArray(Type[] array)
Gibt ein Array zurück, das die Elemente der Liste enthält.
Sie müssen das Array an die Methode übergeben.

Mit diesen Methoden können Sie mit der Liste fast alles tun, was Sie möchten: Elemente austauschen, Elemente hinzufügen und Elemente entfernen. Sie können die Liste mit einem einzigen Befehl löschen oder die Liste sogar in ein Array konvertieren.



4. Vergleich von ArrayListundArray

ArrayListIch glaube nicht, dass wir um den Vergleich und ein Array herumkommen .

Es gibt nur vier Aktionen, die Sie mit Arrays ausführen können:

  • Erstellen Sie ein Array
  • Holen Sie sich ein Element nach Index
  • Legen Sie ein Element nach Index fest
  • Ermitteln Sie die Länge des Arrays

Hier sind diese Operationen, wie sie auf ein Array und ein Array angewendet werden ArrayList:

Array Anordnungsliste
String[] array = new String[10];
ArrayList<String> list = new  ArrayList<String>();
String s = array[0];
String s = list.get(0);
array[0] = "Bye";
list.set(0, "Bye");
int count = array.length;
int count = list.size();

Vergleichen wir die ArrayListFunktionsweise eines Arrays mit der eines Arrays. Lassen Sie uns zum Beispiel diese Aufgabe implementieren: „Lesen Sie 10 Zeichenfolgen von der Tastatur und zeigen Sie sie in umgekehrter Reihenfolge auf dem Bildschirm an.“

Verwenden von Array Verwenden von ArrayList
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
String[] list = new String[10];

for (int i = 0; i < list.length; i++)
{
    String s = console.nextLine();
    list[i] = s;
}

// Display the contents of the array on the screen
for (int i = 0; i < list.length; i++)
{
    int j = list.length - i - 1;
    System.out.println(list[j]);
}
Scanner console = new Scanner(System.in);

// Read strings from the keyboard
ArrayList<String> list = new ArrayList<String>();

for (int i = 0; i < 10; i++)
{
    String s = console.nextLine();
    list.add(s);
}

// Display the contents of the collection on the screen
for (int i = 0; i < list.size(); i++)
{
    int j = list.size() - i - 1;
    System.out.println(list.get(j));
}

Die Analogie ist klar. Bei Arrays ist alles irgendwie kürzer und übersichtlicher. Aber ArrayListes ist auch nicht schwierig: Um ein Element zu erhalten, verwenden wir die get()Methode; um ein Element zu ändern, die set()Methode; um die Länge der Liste zu erhalten, die size()Methode.

Warum nutzen Programmierer die ArrayListKlasse?

Der springende Punkt sind natürlich alle anderen Methoden, die normale Arrays nicht haben:

  • Fügen Sie der Liste ein Element hinzu
  • Fügen Sie ein Element in die Mitte der Liste ein
  • Suchen Sie ein Element in der Liste
  • Entfernen eines Elements aus einer Liste