15.09.2008

Collections

Nach einem netten Wochenende mit Cedric - wir haben mal wieder ein wenig unser Französisch gepflegt -, habe ich mich weiter an die Einarbeitung in Java gemacht. Nachdem ich mir mittlerweile mehr Gedanken um die Datenstruktur als um das Programmieren der Funktionen mache (ein gutes Zeichen für meine anwachsenden Kenntnisse), setze ich mich gerade mit Collections auseinander.
Collections sind Datensammlungen, die beliebig erweitert werden können. Das klingt nicht sehr aufregend. Für den Programmierer ist aber genau das ein großes Problem. Denn normalerweise werden Datensammlungen genau festgelegt und enthalten nur so viele Elemente, wie man ihnen insgesamt zugesteht. Wenn ich also einen Zettelkasten definieren würde, müsste ich eigentlich angeben, dass ich zum Beispiel hundert Zettel in diesen Kasten packen möchte. Der Nachteil dabei ist, dass der Computer dann auch hundert Zettel erwartet, egal, ob ich dann nur zwanzig hineinpacke (was der Computer akzeptieren würde, da er noch achtzig leere Zettel dazutut), oder zweihundert (was der Computer nicht mehr akzeptiert, da er dafür keinen Platz freigestellt hat).
Collections lösen dieses Problem. Wenn eine Collection zwanzig Elemente besitzt, dann wird auch der Speicherplatz für zwanzig Elemente freigegeben, und wenn sie zweihundert Elemente besitzt, dann genau für zweihundert.
Nun, für einen Außenstehenden mag das wirklich nicht aufregend klingen. Für mich ist das allerdings extrem wichtig geworden, da ich mir jetzt schon Gedanken darüber machen muss, wie ich einen Zettel so anlege, dass er nicht nur für den Zettelkasten selbst, sondern auch für alle Erweiterungen tauglich ist. Und eine grundlegende Forderung dabei ist, dass ein Zettelkasten genau so viele Zettel enthalten kann, wie der Benutzer des Zettelkastens hineingetan hat: also beliebig viele.
Dabei gibt es noch ein weiteres Problem: beliebig viele Zettel heißt auch, beliebig viel Speicherplatz im Arbeitsspeicher. Nur funktioniert das nicht wirklich gut. Ich muss also den Arbeitsspeicher möglichst entlasten, indem ich nur die notwendige Anzahl von Zetteln dort lagere, während die anderen in irgendeiner Datei verschwinden, bis sie wieder gebraucht werden. Doch genau das ist ein anderes Problem. Hier experimentiere ich zur Zeit mit Archiven. Auch das ist noch nicht wirklich spruchreif.

Keine Kommentare :