43 lines
2.6 KiB
Plaintext
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! |