PDA

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,
_