Sammlungen Flashcards
Objektsammlungen
° Gleichartige Objekte werden oft zusammengefasst und als eigene Objekte angesehen
° Programmiersprachen stellen vordefinierte Sammlungsbausteine zur Verfügung
° Mit Sammlungen werden andere Objekte gespeichert, gemeinsam manipuliert und Mengen von Objekten an eine andere weitergegeben
° Sichten bei Objektsammlungen:
- Externe Sicht (Klientensicht): wie werden sie verwendet?
- Interne Sicht: wie werden sie realisiert?
Listen
° lineare Sammlungen von gleichartigen Elementen (Werten), in denen ein Element mehrfach auftreten kann
° sind Aneinanderreihungen von gleichartigen Werten:
- Reihenfolge der Listenelemente ist von Bedeutung
- Ein Wert kann in einer Liste mehrfach vorkommen
° Mathematische (rekursive) Definition:
- Eine Liste ist entweder eine leere Liste (notiert als [])
- Oder ien Listenelement gefolgt von einer Liste
° Listen werden sequentiell (d.h. elementweise) durchlaufen:
- Dabei wird eine Operation auf jedes Element der Liste angewendet (mit Beachtung der Reihenfolge)
° Beispielsweise eine Liste von Strings
ArrayList und LinkedList
Mengen
° untergeordnete Sammlungen von Elementen (Werten), in denen jedes Element nur einmal vorkommt
° Sammlung von gleichartigen Elementen, wobei jedes Element nur einmal vorkommt
° kann ein Element mehrfach vorkommen, spricht man von mehrfach- oder multimengen
° mathematische Mengenoperationen die gelten:
- insert: Füge ein Element zur Menge hinzu
- delete: Entferne ein Element aus der Menge
- element: Prüfe, ob ein Element in der Menge vorhanden ist
- union: Vereinige zwei Mengen zu einer neuen
- intersection: Bestimme die Schnittmenge zweier Mengen
- difference: Bestimme die Differenzmenge zweier Mengen
- empty: Prüfe, ob eine Menge leer ist
HashSet und TreeSet
Objektorientierte Sammlungen
° werden zustandsbasiert betrachtet:
- Mengen und Listen als eigenständige Objekte unabhängig von ihren Elementen
- Eine Menge ist wie ein “ungeordneter Behälter” für seine Elemente, die eingefügt und herausgenommen werden können
- Eine Liste ordnet ihre Elemente in Positionen an. Diese Ordnung kann vordefiniert oder vom Benutzer beeinflusst werden
Elemente
° Objekte, die in einer Sammlung vorhanden sind
Operationen
° mit ihnen können Elemente eingefügt und entfernt werden
Elemententyp
° wird als eine Eigenschaft der Sammlung angesehen (z.B.: Sammlung von Strings)
Kardinalität
° ist die Anzahl der enthaltenen Elemente
Kapazität
° ist die Anzahl aufnehmbarer Elemente (i.d.R. beliebig viele Elemente)
Duplikat
° Wenn ein bereits existierendes Element in eine Sammlung eingefügt wird, nennt man das einzufügende Element ein Duplikat
Schnittstelle vs. Implementation
° Eigenschaften einer Sammlungs-Schnittstelle:
- Erlaubt Duplikate?
- Kriterium einer Reihenfolge
° Eigenschaften einer Sammlungs-Implementation:
- Verwendete Datenstrukturen: Array, Verkettung, Kombination
- Effizienz: wie schnell sind einzelne Operatione ausführbar?
° Ein Klient einer Sammlung ist primär an der Schnittstelle interessiert
° Die Implementation ist meist nur zweitrangig
Umgang mit Sammlungen
° Reihenfolge der Elemente:
- Reihenfolge ist nicht definiert
- Reihenfolge ist benutzerdefiniert festgelegt
- Reihenfolge wird automatisch durch die Sammlung erstellt
° Umgangsmöglichkeiten für Duplikate:
- Duplikate sind zugelassen und erhöhen die Kardinalität
- Duplikate sind nicht zugelassen; Duplikate werden nicht eingefügt
Sammlungen in Java
° Sammlungen von Objekten werden unter Collection gefasst
° Java Collections Framerwork (JCF) bietet umfangreiche Unterstützung für Sammlungen
- Beinhaltet Interfaces und Klassen, die diese Interfaces implementieren
- wird als Teil der Sprache betrachtet
° Sammlungen enthalten keine Objekte, sondern Referenzen auf Objekte
Java API
° Java Application Programming Interface -> Bibliotek
° Beinhaltet zur eigenen Programmierung nutzbare Klassen und Interfaces
° ist in Pakete gegliedert
- enthalten Klassen
- das wichtigste Pakete: java.lang
- Interfaces gelten als Teil der Sprache (immer vorhanden)
- dazu gehört bspw. die Klasse String
Importieren von Bibliotheken
° Klassen und Interfaces aus allen anderen Paketen müssen importiert werden, um direkt benutzbar zu sein
° Java Collections Framework bspw. liegt im Paket java.util
° Import-Anweisungen stehen immer zu Anfang eriner Java-Übersetzungsenheit:
import java.util.Set;
/**
* Klassenkommentar
* …