Sammlungen Flashcards

1
Q

Objektsammlungen

A

° 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?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Listen

A

° 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Mengen

A

° 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Objektorientierte Sammlungen

A

° 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Elemente

A

° Objekte, die in einer Sammlung vorhanden sind

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Operationen

A

° mit ihnen können Elemente eingefügt und entfernt werden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Elemententyp

A

° wird als eine Eigenschaft der Sammlung angesehen (z.B.: Sammlung von Strings)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Kardinalität

A

° ist die Anzahl der enthaltenen Elemente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Kapazität

A

° ist die Anzahl aufnehmbarer Elemente (i.d.R. beliebig viele Elemente)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Duplikat

A

° Wenn ein bereits existierendes Element in eine Sammlung eingefügt wird, nennt man das einzufügende Element ein Duplikat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Schnittstelle vs. Implementation

A

° 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Umgang mit Sammlungen

A

° 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Sammlungen in Java

A

° 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Java API

A

° 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Importieren von Bibliotheken

A

° 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
* …

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Interface Set: zentrale Eigenschaften

A

° Set definiert keine Ordnung der Elemente
° Semantik von add ist so definiert, dass keine Duplikate eingefügt werden können
° Gleichheit von Elementen wird mit der Methode equals geprüft
° Formel gilt für alle e1 != e2 im Set: !e1.equalt(e2)
° Massenoperationen haben bei Sets die Bedeutung von mathematischen Mengenoperationen

s1. containsAll(s2): s2 Untermenge von s1
s1. addAll(s2): s1 = s1 vereinigt mit s2
s1. removeAll(s2): s1 = s1 - s2
s1. retainAll(s2): s1 = s1 geschnitten mit s2

17
Q

equals-Methode

A

° jede Klasse in Java bietet automatisch alle Methoden an, die in der Klasse java.lang.Object definiert sind
° Unter anderem definiert jeder Referenztyp deshalb die Methode equals
public boolean equals(Object other)
° Jedes Objekt kann darüber mit einem anderen auf Gleichheit geprüft werden
° Parameter kann ein beliebiges Objekt sein
° vergleicht standardmäßig die Referenz des gerufenen Objektes mit der übergebenen Referenz

18
Q

Redefinieren von equals

A

° Klassen können die vorgegebene Implementation ändern, indem sie eine alternative Implementation angeben

  • > redefinieren die Operation der Klasse Object
  • > Dadurch erhalten die Klienten der Klasse ein anderes Ergebnis beim Aufruf der equals-Methode: heißt bei Sammlungen, dass ein Set die Operation des Elementtyps verwendet

° Bei Redefinition von equals muss die Methode hashCode so redefiniert werden, dass sie für zwei gleiche Objekte den gleichen int-Wert als Ergebnis liefert

19
Q

Einsetzen in Listen

A

aufsichtsliste.add(1,”Jan”); // Einfügung an Position, mit Verschieben des Restes

20
Q

Erweiterte for-Schleife

A
/**
 * Gib alle Personen in der Liste auf die Konsole aus.
 */
public void listeAusgeben(List personenliste)
{
   for (Person p : personenliste) // für jede Person p in der personenliste
   {
      System.out.println(p.gibName());
   }
}
21
Q

Wrapper-Klassen in Java

A

° als Elementtyp für Sammlungen des Java Collection Framework sind ausschließlich Referenztypen zugelassen
° Wir können nur Objekte in einer Java Collection verwalten
° Problem: Was ist wenn wir eine Menge von ganzen Zahlen oder booleschen Werten in unserer Anwendung brauchen?
° Für jeden primitiven Typ gibt es eine so genannte Wrapper-Klasse:

int            -> Integer
boolean  -> Boolean
char         -> Character
long        -> Long
double   -> Double
float        -> Float
short       -> Short
byte        -> Byte
22
Q

Boxing und Unboxing primitiver Typen

A
° Wert eines primitiven Typs kann in einem Objekt des zugehörigen Wrapper-Typs verpackt werden: 
  Integer iWrapper = new Integer(42);
° Referenz auf dieses Wert-Objekt kann dann in eine Menge eingefügt werden: 
  Set intSet= new HashSet();
  intSet.add(iWrapper);

° Über die Operationen des Wrapper-Typs kann der verpackte Wert auch wieder ausgepackt werden:
int i = iWrapper.intValue();

° Für boolesche Werte analog:
  Boolean bWrapper = new Boolean(true);
  boolean b = bWrapper.booleanValue();
23
Q

Auto-Boxng und Auto-Unboxing in Java

A

° einpacken:
int i = 42;
Integer iWrapper = i; // Auto-Boxing

° als aktueller Parameter:
  Licht intList = new LinkedList();
  intList.add(i);

° auspacken:
int i = iWrapper; // Auto-Unboxing

24
Q

Transitivität

A

° Gleichheit transitiv definiert: a=b ^ b = c => a=c

Integer a = new Integer(5);
int b = 5;
Integer c = new Integer(5);
-> Auto - Unboxing:
    a == b // automatisches Unboxing von a 
    b == c // automatisches Unboxing von c
jedoch: a != c