Hallo zusammen,
ich hoffe, ich bin hier im richtigen Unterforum für diese Art von Frage. Und zwar beschäftige ich mich seit relativ kurzer Zeit mit Java und bin gerade auf ein Problem mit Generics gestoßen. Es geht darum, eine bestehende ArrayList anhand von mir gewaehlter Kriterien zu sortieren. Dafür habe ich (grob betrachtet) folgenden Code verwendet. Dummerweise sagt er mir dann immer bei zuVergleichenderWertA > zuVergleichenderWertB , dass der Vergleichsoperator hierfür nicht definiert ist. Wenn ich stattdessen zuVergleichenderWertA.getGewicht() > zuVergleichenderWertB.getGewicht() verwende, funktioniert es. Da ich die compare-Methode aber gerne für verschiedene übergebene Attribute verwenden würde, gestaltet sich die Festlegung auf bestimmte Getter an dieser Stelle etwas ungünstig, da es nicht flexibel zu handhaben ist. Vor allem warum funktioniert der Vergleichsoperator == aber > dagegen nicht? Er müsste doch in beiden Fällen das gleiche Problem haben: Nämlich dass er nicht weiß, welche Attribute er überhaupt vergleichen soll. Daher wollte ich da irgendwie Platzhalter einbauen, aber es scheint nicht zu funktionieren... oder ist es gar nicht möglich, dass anders zu gestalten?
Ich habe schon zig Seiten im Internet besucht (unter anderem die JavaInsel), aber ich komme bei der OO-Gestaltung dieser Methode nicht vorwärts. Ich wäre euch sehr dankbar, wenn ihr ein paar (mehr) hilfreiche Tipps auf Lager habt, damit ich das Problem irgendwie lösen kann. Generics sind irgendwie nicht wirklich anfängertauglich, aber dummerweise scheine ich da nicht drum rum zu kommen. Vielen Dank schonmal für eure Antworten.
Mario
ich hoffe, ich bin hier im richtigen Unterforum für diese Art von Frage. Und zwar beschäftige ich mich seit relativ kurzer Zeit mit Java und bin gerade auf ein Problem mit Generics gestoßen. Es geht darum, eine bestehende ArrayList anhand von mir gewaehlter Kriterien zu sortieren. Dafür habe ich (grob betrachtet) folgenden Code verwendet. Dummerweise sagt er mir dann immer bei zuVergleichenderWertA > zuVergleichenderWertB , dass der Vergleichsoperator hierfür nicht definiert ist. Wenn ich stattdessen zuVergleichenderWertA.getGewicht() > zuVergleichenderWertB.getGewicht() verwende, funktioniert es. Da ich die compare-Methode aber gerne für verschiedene übergebene Attribute verwenden würde, gestaltet sich die Festlegung auf bestimmte Getter an dieser Stelle etwas ungünstig, da es nicht flexibel zu handhaben ist. Vor allem warum funktioniert der Vergleichsoperator == aber > dagegen nicht? Er müsste doch in beiden Fällen das gleiche Problem haben: Nämlich dass er nicht weiß, welche Attribute er überhaupt vergleichen soll. Daher wollte ich da irgendwie Platzhalter einbauen, aber es scheint nicht zu funktionieren... oder ist es gar nicht möglich, dass anders zu gestalten?
Ich habe schon zig Seiten im Internet besucht (unter anderem die JavaInsel), aber ich komme bei der OO-Gestaltung dieser Methode nicht vorwärts. Ich wäre euch sehr dankbar, wenn ihr ein paar (mehr) hilfreiche Tipps auf Lager habt, damit ich das Problem irgendwie lösen kann. Generics sind irgendwie nicht wirklich anfängertauglich, aber dummerweise scheine ich da nicht drum rum zu kommen. Vielen Dank schonmal für eure Antworten.
Mario
Java:
public class CollectionsTest implements Comparator<Test> {
public void listeAnzeigen() {
java.util.Collections.sort(liste, new CollectionsTest());
...
}
@override
public int compare(Test zuVergleichenderWertA, Test zuVergleichenderWertB) {
int i = 0;
if (zuVergleichenderWertA == zuVergleichenderWertB) {
i = 0;
} else if (zuVergleichenderWertA > zuVergleichenderWertB) {
i = -1;
} else {
i = 1;
}
return i;
}
}