Hallo,
Ich bin momentan echt am verzweifeln
Ich habe eine Klasse, die von LinkedList erbt und Elemente beinhaltet, die einen String (name) in ihren Attributen haben. Jetzt würde ich diese Liste gerne sortiert halten, sprich: ich mache beim Einfügen eine Binärsuche und merke mir den Wert, wo mein Element hinkommen soll. Zurückgeben möchte ich, ob das Element gefunden wurde. Ich war jetzt schon so weit, dass ich (nur zu Testzwecken) von einer Binärsuche auf eine lineare Suche umgestiegen bin, jedoch kommt bei mir immer das selbe Ergebnis (ganz glücklich bin ich mit der Implementierung ohnehin nicht):
Meine Beispieleingabe folge (mit jeweiligem Aufruf von find()) sieht so aus:
a d c b f
Die Ausgabe lautet dann: b c d f a statt a b c d f. Ich denke mir mal, dass die Art wie ich mir meinen index merke nicht ganz richtig ist.
EDIT: Ich glaube mit Comparator und Collections lässt sich da vielleicht was machen, aber ich bekomme es grad nicht hin
Vielen Dank,
mfg
Ich bin momentan echt am verzweifeln
Java:
import java.util.LinkedList;
public class GroupList extends LinkedList<ObjGroup> {
private int index = 0;
public boolean find(String str) {
for (int i=0; i<this.size(); i++) {
index = i;
int cmp = str.compareTo(this.get(i).name);
if (cmp == 0)
return true;
if (cmp < 0)
return false;
}
return false;
}
// Einfügen nachdem sortiert wurde
public boolean add(ObjGroup group) {
index = Math.max(Math.min(index, this.size()), 0);
super.add(index, group);
return true;
}
// Gesuchtes Element zurückgeben
public ObjGroup getGroup() {
if ((index >= 0) && (index < this.size()))
return this.get(index);
return null;
}
}
a d c b f
Die Ausgabe lautet dann: b c d f a statt a b c d f. Ich denke mir mal, dass die Art wie ich mir meinen index merke nicht ganz richtig ist.
EDIT: Ich glaube mit Comparator und Collections lässt sich da vielleicht was machen, aber ich bekomme es grad nicht hin
Vielen Dank,
mfg
Zuletzt bearbeitet: