Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Datenstruktur für ein Wörterbuch? (Java)
TrollSlayer
09-09-2003, 10:32
Hallo!
Welche Datenstruktur würdet ihr für ein Wörterbuch in Java nehmen? Die einzellnen Einträge sollten jeweils ein Wort oder mehrere Wörter in einer und in der anderen Sprache enthalten. Die Datenstruktur sollte einen Iterator haben. Vielleicht Hashtable? (Hat zwar kein Iterator, aber mit Hashtable.values() kriegt man eine Collection also auch eine Liste zurück.)
peschmae
09-09-2003, 12:54
das Problem bei den Hashwerten ist, dass du dann jeweils nur ein Wort in der Ausgangssprache verwenden darfst
Ausserdem müsste dann doch die Schreibweise genau übereinstimmen - ausser du durchsuchst es selber und da ist doch ne ArrayList angebrachter finde ich
MfG Peschmä
TrollSlayer
09-09-2003, 13:04
ArrayList sieht nicht schlecht aus, aber wie bestimme ich welches Wort zu welcher Sprache gehöhrt, gerade Index-Zahl erste Sprache, underade zweite?
peschmae
09-09-2003, 13:20
du kannst ja auch eine Klasse für jedes wörterpaar machen und nicht string verwenden
public class Wort {
private String nichtFremd;
private String fremd;
Wort(String nichtFremd; String fremd) {
this.fremd = fremd;
this.nichtFremd = nichtFremd;
}
public String getNichtFremd() {
return nichtFremd;
}
...
}
MfG Peschmä
Badsteve
09-09-2003, 20:51
Ein Hash von Arrays. Kann dir zwar nicht sagen, ob das Java geht aber so würde ich das machen.
Steve
TrollSlayer
10-09-2003, 10:06
Vielen Dank für eure vorschläge! :) Ich werde es mal mit einem ArrayList von Objekten versuchen die wiederum jeweils zwei listen haben - eine für die erste sprache eine für die zweite, weil ein wort in einer sprache kann mehrere bedeutungen in der anderen haben.
anda_skoa
10-09-2003, 16:41
Eine mögliche Variante ist die Kombination von Containern.
Zum Beispiel eine Map als Lookupstruktur und als Werte darin List oder Vector.
Ciao,
_
peschmae
10-09-2003, 21:01
@anda_skoa: Vector wurde in Java2 durch ArrayList ersetzt. Eigentlich.
Ist allerdings mittlerweile selbst auch auf basis von ArrayList implementiert - aber es gibt afaik keinen Grund Vector noch zu verwenden
MfG Peschmä
anda_skoa
11-09-2003, 23:52
Ah, wusste ich nicht.
In C++ ist ein großer Unterschied zwischen std::vector und std::list
In Java hab ich häufig im Code mit den Basis Interfaces gearbeitet, also List, Map, manchmal sogar nur Collection.
Dann kann man im Nachhinhein noch einiges umstellen, ohne viel Code ändern zu müssen.
Ciao,
_
peschmae
12-09-2003, 09:34
ja,
z.B. gibts auch ne ArrayList-Impl (den Interface-Namen weiss ich nicht) die dasselbe auf Basis von LinkedLists realisiert
ist aber langsamer für so ziemlich alles
MfG Peschmä
anda_skoa
15-09-2003, 19:49
Original geschrieben von peschmae
z.B. gibts auch ne ArrayList-Impl (den Interface-Namen weiss ich nicht) die dasselbe auf Basis von LinkedLists realisiert
java.util.LinkedList
ist aber langsamer für so ziemlich alles
Hmm, sollte ansich nicht der Fall sein.
Eine LinkedList ist normalerweise bei direktem Indexzugriff langsamer als ein Vektor, dafür bei Einfügen und Entfernen im Inneren schneller, weil bei einem Vektor normalerweise umkopiert werden muss.
Von Anfang bis Ende durchlaufen sollte ziemlich gleich schnell gehen.
Ciao,
_
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.