(COLLECTIONS II PART 1 / 3) Die Kollektion des Typs LIST...
Im
ersten Teil unserer Kollektion Reihe, möchte ich mit euch auf das
Begriff List hinübergehen.
Im
zweiten mit dem Sets und schließlich im letzten Teil werde ich euch
die Funktion und die Eigenschaften von Maps erkären.
Eine
List ist eine beliebig große Liste von Elementen welches vom
beliebigen Typs abhängig sind und auf diese wahlfrei sowie
sequenziell zugegriffen kann. So gibt es für das Interface
(Schnittstelle) List beispielsweise die Implementierungsmöglichkeiten
wie das LinkedList,
ArrayList.
Die
Kollektion des Typs List
Eine
Collection vom Typ List ist eine geordnete Menge von Objekten, auf
die entweder sequenziell oder über ihren Index (Index = Position)
zugegriffen werden kann. Wie bei den Arrays hat das erste Element den
Index 0 und das letzte Element den Index size()
-1. Mit size() -1
meinen wir, dass wenn wir die Größe des Array erfahren wollen die
Methode arrayReferenz.size()
starten. Diese Methode gibt uns die Größe des Arrays. Da wir ab 0
anfangen zu zählen, müssen wir eine Indexverschiebung unternehmen
sodass wir vom Index 1 anfangen zu zählen. Der Index gibt uns
Vorteile wie bei einer beliebigen Stelle der Liste ein Element
hinzufügen, zu löschen, zu ändern und weitere Änderungen zu
unternehmen.
Welche
Implementierungen gibt es?
LinkedList:
Die
Klasse LinkedList realisiert eine Liste, deren Elemente als Doppelt
verkettete lineare Liste gehalten werden. Ihre Einfüge- und
Löschoperationen sind im Prinzip performanter als die der ArrayList.
Der wahlfreie Zugriff ist dagegen normalerweise langsamer.
Methoden/Funktionen
der Implementierung LinkedList:
LinkedList
Objekt definieren.
LinkedList<String>
meineListe = new
LinkedList<String>();
meineListe.addFirst(“Tom“);
meineListe.addFirst(“Romeo“);
meineListe.addFirst(“Harry“);
meineListe.addFirst(“Dick“);
meineListe.next();
meineListe.remove();
Die
Methode add fügt ein neues
Element unmittelbar vor dem Positionszeiger ein.
Die
Methode remove ist nur
zulässig, wenn vorher next
aufgerufen wurde; dann wird das von next zurückgegebene
Element aus der Liste entfernt.
Es
gibt auch noch die Methode hasPrevious, previous,
die den Positionszeiger nach vorne bewegen. Die Methode remove
darf auch nach einem Aufruf von
previous aufgerufen werden und
entfernt dann das von previous zurückgegebene
Element aus der Liste.
ArrayList:
Die
Klasse ArrayList implementiert die Liste als Array von Elementen, das
bei Bedarf vergrößert wird. Hier ist der wahlfreie Zugriff
schneller, aber bei großen Elementzahlen kann das Einfügen und
Löschen länger dauern als bei einer LinkedList.
Methoden/Funktionen
der Implementierung ArrayList:
ArrayList
Objekt definieren.
ArrayList<String>
liste = new
ArrayList<String>();
Element
ausgeben = liste.get(14);
Element
einfügen =
liste.add(“Esmer“);
Element
einfügen mit Positionsangabe = liste.add(0,
“Esmer“);
Element
ändern = liste.set(0,
“Esmu“);
Element
entfernen =
liste.remove(“Esmer“);
=
liste.remove(1)
//Index
Größe
zurückgeben = liste.size();
Prüfen,
ob das Objekt enthalten ist =
liste.contains(“Esmer“);
Welches
Index hat das Objekt = liste.indexOf(“Esmer“);
Liste
löschen = liste.clear();
Unterschied
zwischen ArrayList und
LinkedList:
-
ArrayList ist schneller bei
Zugriff auf Einzelne Elemente.
Der
Unterschied zwischen der herkömmlichen Array und der ArrayList ist,
dass der ArrayList Dynamisch ist. Was bedeutet, dass die Größe der
Liste veränderbar ist. Dies gibt auch für die LinkedList.
-
LinkedList ist schneller bei
Löschen und Einfügen der Elemente.
Bei
einer LinkedList welches auch auf deutsch als verkettete Liste
benannt wird, haben alle Listenelemente eine Verbindung zum
jeweiligen Vorgänger beziehungsweise der Nachfolger. Existiert also
kein Nachfolger, so wird das letzte Element auf das NULL- Referenz
verweist. Der Vorteil bei einer Verketteten Liste besteht darin, dass
im Vergleich zu einer ArrayList die Elemente schneller hinzugefügt
und gelöscht werden können. Will man jedoch die Elemente an einer
bestimmten Stelle auslesen, so ist der Zugriff langsamer, da die
Verbindungen bis zu dem passenden Element durchlaufen werden müssen.
Ich
habe zur Vereinfachung und zur Verständnis die Beispielcodes für
ArrayList
und
LinkedList
>>Hier<<
hochgeladen. Sobald ihr fragen habt, könnt ihr diese als Kommentar
unten schreiben.
Ich
habe >>Hier<<
ein BeispielProgramm AdressBuch hochgeladen. Ihr könnt diesen
Programm Kompilieren und euch ein Übersicht über das Programmieren
mit ArrayList und LinkedList verschaffen. Viel SPASS ;)
Hallo Muhammet. Ich möchte mich bei dir bedanken, dass du echt coole Rezensionen hoch lädst. Meine Frage bezieht sich auf deine Anwendung AdressBuch, welches du auf GitHub hochgeladen hast. Kannst du mir nochmal mitteilen, warum du explizit ArrayList und nicht LinkedList in diesem Beispiel verwendet hast. Danke im voraus.
AntwortenLöschenKann ich dir gerne sagen. Ich habe bewusst ArrayList angewendet statt LinkedList da ich mit ArrayList jederzeit die Elemente mit dem Jeweiligen Index überschreiben kann. Ich hoffe, dass ich deine Frage hiermit beantwortet habe.
Löschen