Benutzer-Werkzeuge

Webseiten-Werkzeuge


api:documentation:collections:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
api:documentation:collections:start [2021/02/04 15:26] – [HashMap] Martin Pabstapi:documentation:collections:start [2023/06/12 08:28] (aktuell) – [ArrayList] Martin Pabst
Zeile 1: Zeile 1:
 ====== Collections ====== ====== Collections ======
-<WRAP center round info 60%> +<WRAP center round info 80%> 
-Das **Collections-Framework** bietet Klassen zum Speichern von Listen, Maps (Schlüssel-Wert-Speicher), Sets (Mengen) und Stacks (Stapelspeichern). Mit Hilfe von **Generics** kann man den Datentyp der zu speichernden Objekte bei der Deklaration der Collection angeben, so dass man die Daten ohne Casten gleich mit dem richtigen Datentyp zurückerhält. \\ \\ +Das **Collections-Framework** bietet Klassen zum Speichern von Listen, Maps (Schlüssel-Wert-Speicher), Sets (Mengen) und Stacks (Stapelspeichern). Mit Hilfe von **Generics** kann man den Datentyp der zu speichernden Objekte bei der Deklaration der Collection angeben, so dass man die Daten ohne Casten gleich mit dem richtigen Datentyp zurückerhält, z.B. 
 +<code myJava> 
 +ArrayList<String> liste = new ArrayList<>();    // <String> bedeutet: Diese ArrayList speichert Objekte der Klasse String.  
 +liste.add("Test"); 
 +String t = liste.get(0); 
 +</code> 
 +Man kann alle Collections-Klassen aber auch ohne Generic-Syntax nutzen, muss dann beim Entnehmen der Objekte aber auf den korrekten Datentyp casten, z.B. 
 +<code myJava> 
 +ArrayList liste = new ArrayList();    // Diese Liste speichert beliebige Objekte  
 +liste.add("Test"); 
 +String t = <String>liste.get(0); 
 +</code>
 </WRAP> </WRAP>
 + \\ \\ 
  
  
 ===== ArrayList ===== ===== ArrayList =====
-<WRAP center round info 60%>+<WRAP center round info 80%>
 ArrayLists sind Listen, bei denen man in konstanter Zeit auf das i-te Element lesend zugreifen kann. Dafür ist das Speichern von Werten manchmal etwas langsamer. \\ \\  ArrayLists sind Listen, bei denen man in konstanter Zeit auf das i-te Element lesend zugreifen kann. Dafür ist das Speichern von Werten manchmal etwas langsamer. \\ \\ 
 Im "Inneren" haben ''ArrayList'' Objekte ein Array, das etwas größer dimensioniert ist als die Anzahl der in der ''ArrayList'' enthaltenen Elemente. Ist das Array voll, dann wird ein deutlich größeres Array reserviert, und anschließend werden die Elemente vom alten in das neue Array kopiert. Das alte Array wird danach verworfen. \\ \\  Im "Inneren" haben ''ArrayList'' Objekte ein Array, das etwas größer dimensioniert ist als die Anzahl der in der ''ArrayList'' enthaltenen Elemente. Ist das Array voll, dann wird ein deutlich größeres Array reserviert, und anschließend werden die Elemente vom alten in das neue Array kopiert. Das alte Array wird danach verworfen. \\ \\ 
Zeile 20: Zeile 32:
   * ''contains(element)'' gibt genau dann ''true'' zurück, wenn die Liste das Element enthält.   * ''contains(element)'' gibt genau dann ''true'' zurück, wenn die Liste das Element enthält.
   * ''indexOf(element)'': Falls das Element in der Liste enthalten ist, wird der Index des Elements zurückgegeben, ansonsten -1.   * ''indexOf(element)'': Falls das Element in der Liste enthalten ist, wird der Index des Elements zurückgegeben, ansonsten -1.
-  * ''addAll(liste)'' fügt der Liste alle Elemente der übergebenen Liste hinzu.+  * ''addAll(liste)'' fügt der Liste alle Elemente der übergebenen Liste hinzu. Letztere wird dabei nicht verändert.
 </WRAP> </WRAP>
  
Zeile 43: Zeile 55:
  
 for(int i = 0; i < namen.size(); i++) { for(int i = 0; i < namen.size(); i++) {
 +   println(namen.get(i));
 +}
 +
 +println("\nUnd jetzt zufällig vertauscht:");
 +Collections.shuffle(namen);
 +for (int i = 0; i < namen.size(); i++) {
    println(namen.get(i));    println(namen.get(i));
 } }
Zeile 84: Zeile 102:
  
 ===== HashMap ===== ===== HashMap =====
-<WRAP center round info 60%>+<WRAP center round info 80%>
 Hashmaps verwendet man, um Schlüssel-Wert-Paare zu speichern. Sie können bei Angabe des Schlüssels den passenden Wert finden und zurückgeben. Hashmaps verwendet man, um Schlüssel-Wert-Paare zu speichern. Sie können bei Angabe des Schlüssels den passenden Wert finden und zurückgeben.
   * Die Methode put(schlüssel, wert) speichert ein Schlüssel-Wert-Paar   * Die Methode put(schlüssel, wert) speichert ein Schlüssel-Wert-Paar
Zeile 130: Zeile 148:
  
 ===== HashSet ===== ===== HashSet =====
-<WRAP center round info 60%> +<WRAP center round info 80%> 
-HashSets bilden Mengen aus der Mathematik nach. Wie diese können sie Elemente speichern, jedoch jedes höchstens ein Mal. +HashSets bilden Mengen aus der Mathematik nach. Wie diese können sie Elemente speichern, jedoch jedes höchstens ein Mal. \\ \\  
 +**Methoden:** 
 +  * ''add(element)'' fügt dem ''HashSet'' das Element hinzu. 
 +  * ''addAll(hashSet)'' fügt dem ''HashSet'' jedes Element des übergebenen HashSets hinzu. Letzteres wird dabei nicht verändert. 
 +  * ''contains(element)'' gibt genau dann ''true'' zurück, wenn sich das Element im ''HashSet'' befindet. 
 +  * ''isEmpty()'' gibt genau dann ''true'' zurück, wenn das ''HashSet'' keine Elemente enthält. 
 +  * ''remove(element)'' entfernt das Element - falls vorhanden - aus dem ''HashSet''
 +  * ''clear()'' entfernt alle Elemente aus dem ''HashSet''
 +  * ''size()'' gibt die Anzahl der Elemente im ''HashSet'' zurück.
 </WRAP> </WRAP>
  
Zeile 160: Zeile 186:
    println(name, Color.yellow);    println(name, Color.yellow);
 } }
 +</script>
 +
 +</div>
 +
 +</HTML>
 +
 +
 +===== Stack =====
 +<WRAP center round info 80%>
 +Ein ''Stack'' (deutsch: "Stapelspeicher" oder "Kellerspeicher", [[https://de.wikipedia.org/wiki/Stapelspeicher|siehe auch hier]]) ist eine Datenstruktur, die sich wie ein Stapel Papier verhält: Man kann beliebig viele Elemente mit der Methode ''push'' "auf den Stack legen", wobei das letzte immer "zuoberst" zum Liegen kommt. Nimmt man die Elemente mit der Methode ''pop'' wieder "vom Stack herunter", so erhält man sie in umgekehrter
 +Reihenfolge zurück, d.h. immer das oberste zuerst.  \\ \\ 
 +**Methoden:**
 +  * ''push(element)'' fügt ein Element "oben" auf dem Stack hinzu
 +  * ''pop()'' nimmt das oberste Element vom Stack und gibt es zurück
 +  * ''peek()'' gibt das oberste Element zurück, belässt es aber auf dem Stack
 +  * ''size()'' gibt die Anzahl der Elemente auf dem Stack zurück
 +  * ''clear()'' nimmt alle Elemente vom Stack herunter
 +  * ''isEmpty()'' gibt genau dann ''true'' zurück, wenn kein Element auf dem Stack liegt
 +  * ''add(element)'' bewirkt dasselbe wie ''push''
 +  * ''remove(element)'' entfernt - falls vorhanden - das Element aus dem Stack.
 +  * ''contains(element)'' gibt genau dann ''true'' zurück, wenn der Stack das Element enthält.
 +  * ''indexOf(element)'': Falls das Element auf dem Stack enthalten ist, wird der Index des Elements zurückgegeben, ansonsten -1.
 +
 +</WRAP>
 +
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'StackExample'}">
 +
 +<script type="text/plain" title="StackExample.java">
 +Stack<String> st = new Stack();    // Das <String> bedeutet: Auf diesem Stack können Strings abgelegt werden.
 +
 +st.push("1. Element");
 +st.push("2. Element");
 +st.push("3. Element");
 +st.push("4. Element");
 +
 +println(st.pop());
 +println(st.pop());
 +
 +st.push("5. Element");
 +println(st.pop());
 +println(st.pop());
 +</script>
 +
 +</div>
 +
 +</HTML>
 +
 +===== LinkedList =====
 +<WRAP center round info 80%>
 +Eine ''LinkedList'' ist eine Liste, bei der man Elemente an beiden Enden beliebig hinzufügen oder wegnehmen kann. Im Gegensatz zu einer [[#ArrayList|ArrayList]] wird zum Speichern der Liste aber kein Array verwendet, sondern jedes Element wird in ein "Knoten-Objekt" verpackt und diese speichern zusätzlich Referenzen auf den Vorgänger- und Nachfolgerknoten, [[https://de.wikipedia.org/wiki/Liste_(Datenstruktur)|siehe auch den Wikipedia-Artikel hier.]] \\ \\ 
 +**Methoden:**
 +  * ''add(element)'' fügt am Ende der Liste ein Element hinzu
 +  * ''addLast(element)'' wirkt identisch zu ''add''
 +  * ''push(element)'' wirkt identisch zu ''add''
 +  * ''addFirst(element)'' fügt am Ende der Liste ein Element hinzu
 +  * ''poll()'' entnimmt das Element am Kopf der Liste und gibt es zurück.
 +  * ''peek()'' gibt das Element am Kopf der Liste zurück, verändert die Liste aber dabei nicht.
 +  * ''removeFirstOccurrence(element)'' löscht das erste Element der Liste, das gleich dem übergebenen Element ist.
 +  * ''removeLastOccurrence(element)'' löscht das letzte Element der Liste, das gleich dem übergebenen Element ist.
 +  * ''removeFirst()'' Entnimmt das Element am Anfang der Liste und gibt es zurück.
 +  * ''removeLast()'' Entnimmt das Element am Ende der Liste und gibt es zurück.
 +  * ''pop()'' wirkt identisch zu ''removeLast''.
 +  * ''peekFirst()'' gibt das Element am Anfang der Liste zurück, verändert die Liste aber nicht.
 +  * ''peekLast()'' gibt das Element am Ende der Liste zurück, verändert die Liste aber nicht.
 +  * ''size()'' gibt die Anzahl der Elemente in der Liste zurück
 +  * ''remove(element)'' entfernt - falls vorhanden - das Element aus der Liste.
 +  * ''remove(index)'' entfernt das Element mit dem angegebenen Index aus der Liste
 +  * ''clear()'' entfernt alle Elemente aus der Liste.
 +  * ''contains(element)'' gibt genau dann ''true'' zurück, wenn die Liste das Element enthält.
 +  * ''indexOf(element)'': Falls das Element in der Liste enthalten ist, wird der Index des Elements zurückgegeben, ansonsten -1.
 +  * ''addAll(liste)'' fügt der Liste alle Elemente der übergebenen Liste hinzu. Letztere wird dabei nicht verändert.
 +</WRAP>
 +
 +
 +<HTML>
 +
 +<div class="java-online" style="height: 400px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'LinkedListExample'}">
 +
 +<script type="text/plain" title="LinkedListExample.java">
 +LinkedList<String> liste = new LinkedList<>();
 +
 +liste.addFirst("Element 1");
 +liste.addFirst("Element 2");
 +liste.addFirst("Element 3");
 +liste.addLast("Element 0");
 +
 +println(liste.removeFirst());
 +println(liste.removeLast());
 +
 +println("Rest der Liste: " + liste);
 </script> </script>
  
api/documentation/collections/start.1612448793.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki