PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADT Dictionary Applet



NoGo
07.02.2012, 14:18
Ich arbeite gerade an einem kleinen Test Applet für ein ADT Dictionary. Die Klasse Dictionary scheint ohne Probleme zu funktionieren, nur das Applet geht noch nicht ganz. Ich kann ein neues Element hinzufügen, aber keines löschen. Ich suche jetzt schon seit einiger Zeit nach einem Fehler, konnte aber keinen finden.

Dictionary (http://pastebin.com/GLqSu5uU)

Applet (http://pastebin.com/v6d8QQjU)

Master of Chaos
07.02.2012, 15:31
Bin zwar noch nicht so erfahren in Java aber spontan würd ich sagen du vergleichst bei delete liste[i] == x, Strings werden aber mit string1.equals(string2) verglichen. Bei deiner Version bekommst du nur true falls der Speicherort der beiden Strings gleich ist. Equals schaut ob es der String den gleichen Inhalt hat.

NoGo
07.02.2012, 15:34
Hab es jetzt noch nicht versucht kann mir aber denken, dass dort der Fehler liegt. Echt blöd, dass ich da nicht drauf gekommen bin...


Edit: Hast recht, Strings mit == vergleichen ist nicht wirklich gut ;)

Butcher
07.02.2012, 17:19
Hast recht, Strings mit == vergleichen ist nicht wirklich gut ja, zumindest in java, aber solche kleinigkeiten tauchen immer auf, ... sollte aber deinen fehler beheben :)

Kzed
11.02.2012, 19:32
Dies sind nur Anregungen woran du dich vielleicht noch versuchen könntest und worüber du dich vielleicht noch informieren solltest! Falls dies nicht erwünscht ist so bitte ich darum es einfach zu ignorieren.

Bei einem Dictionary Applet ist außerdem unbedingt zu empfehlen eine (nicht unbedingt)selbstgeschriebene Listen-Funktion mit einzubauen. Dies hat im allgemeinen den Zweck nicht die ganze Dictionary zu durchsuchen. Dies kann ganz einfach laufen. Du teilst z.B. manuell jedem Buchstaben eine Zahl zu, der Einfachheit halber sagen wir einfach mal:



int Zahl = (int)String;

Nun verkettest du die Liste mit einem Pointer zum ersten Element und jeweils jedes Element hat nen Pointer zum nächsten Element. Nun legst du eine Liste in einer Liste an usw. und kannst anschließend dann jeweils immer die "Zahl" wie oben im code tag zu sehen als ID nutzen. Somit ersparst du dir beim Suchen schonmal(es gibt natürlich noch viel effektivere Methoden und man sollte eigentlich immer nahe an O(1)(siehe Big-O Notation) sein) je nach Wortschatz um die Hunderttausend iterations. Auserdem solltest du soweit möglich immer eine Art "Live-Translation" einbauen mit Tick interval und multi-threading.

Anschließend könntest du noch das ganze mit richtigen Schnittstellen versehen damit das updaten leichter fällt. In nem Jahr könntest du dann Google bescheid sagen das du die neue Google Translator Engine geschrieben hast =).

Natürlich war das letztere nur ein Scherz... =)

Ich wünsch dir noch viel Spaß beim Tippern und viel Glück.

MfG,
Kzed.