Java_2/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/aufgabe.txt

43 lines
2.6 KiB
Plaintext

In einer Textdatei sind Vorlesungsdaten gespeichert. Jede Zeile besteht aus vier Teilstrings, die mit Doppelpunkten getrennt sind. Der Doppelpunkt kommt sonst nicht vor. Die vier Strings in einer Zeile enthalten der Reihe nach:
Studiengruppe
Titel der Vorlesung
Dozent
Teilnehmerzahl
Ein Ausschnitt aus der Datei könnte so aussehen:
I2:Java 2:Rump:100
I2:Algorithmen und Datenstrukturen:Totzauer:80
MT2:Mathematik 2:von Coelln:60
MT2:Audio-/Videotechnik:Lemke:50
E2:Mathematik 2:Rabe:70
Die folgende Methode load liest eine solche Datei und liefert sie als Liste von Stringlisten ("Datenbasis") zurück.
public static List<List<String>> load(String filename) throws IOException {
List<List<String>> result = new ArrayList<List<String>>();
BufferedReader br = new BufferedReader(new FileReader(filename));
for (String line=br.readLine(); line!=null; line=br.readLine())
result.add(Arrays.asList(line.split(":")));
br.close();
return result;
}
Kapseln Sie eine derartige Datenbasis in einer Klasse Vorlesungsverzeichnis im Paket vorlesung mit den folgenden Methoden:
Konstruktor
Lädt die Datenbasis von einer Datei, deren Name als String übergeben wird. Für alle möglichen Formatfehler in der Datei soll eine TextFileFormatException mit einer aussagekräftigen Fehlermeldung geworfen werden.
public List<String> titles()
Liefert eine alphabetisch sortierte Liste mit den Titeln aller Vorlesungen.
public Set<String> workaholics()
Liefert die Menge derjenigen Dozenten, die zwei oder mehr Vorlesungen halten.
public Map<String, List<String>> groupToTitles()
Liefert eine Map, die Studiengruppen auf Listen von Vorlesungstiteln abbildet. Unter dem Schlüssel MT2 wäre für die oben angegebene Datenbasis zum Beispiel als Wert die Liste [Mathematik 2, Audio-/Videotechnik] zu finden.
public Map<String, List<String>> multipleTitles()
Liefert eine Map, die Vorlesungen auf Listen von Dozenten, die diese Vorlesungen halten, abbildet. Als Schlüssel werden in der Map nur Vorlesungen verwendet, die von unterschiedlichen Dozenten gehalten werden. Entsprechend der obigen Datenbasis würde in diesem Fall nur ein Eintrag in der Map stehen mit dem Schlüssel Mathematik 2 und dem Wert [von Coelln, Rabe] als Liste.
public List<String> descendingTitles()
Liefert eine nach Teilnehmerzahl absteigend(!) sortierte Liste mit den Titeln aller Vorlesungen.
Die Klasse Vorlesungsverzeichnis muss die Daten zu den Vorlesungen intern als Objektvariable in einer Set<Vorlesung> speichern und verarbeiten!