Comparator für das Sortieren einer arraylist-Objekt von float-parameter
Wie kann ich ein Komparator in der Lage sein Sortieren einer arraylist, die von einem float-parameter?
Vorstellen, ich habe eine arraylist mit Objekten, die hat so etwas wie dieses:
ID=7 TFIDF=0.12654299 PR=25238.0
ID=4 TFIDF=0.12654299 PR=3638.0
ID=4 TFIDF=0.12654299 PR=3638.0
ID=4 TFIDF=0.12654299 PR=3638.0
ID=3 TFIDF=0.56442446 PR=14558.0
ID=1 TFIDF=0.0083091585 PR=3953.0
Möchte ich Sortieren das array von TFIDF Werte.. soweit ich weiß, ich kann nur Sortieren von integer.. Also im Vergleich Nullen.
Bisher habe ich dieses:
Collections.sort(Contents_To_Show, new Comparator<ContentToShow>() {
public int compare(ContentToShow o1, ContentToShow o2) {
return (int) (o1.GetPR() - o2.GetPR());
}
});
Aber. Wieder, er vergleicht mich nur der integer-Teil. Wie Vergleiche ich das ganze Wert?
Bitte helfen.
Dank
As far as i know i can only sort them by integer.. Thus, im comparing zeros.
Wer sagt das? Sie vergleichen, Sie durch was auch immer Attribut, das Sie wollen, das einzige, was zählt, ist diecompare
Rückgabewert der Methode.- Gut. Zumindest ist es noch nicht die erwarteten Ergebnisse. Der code, den ich gepostet nicht das Sortieren der Werte, die ich möchte. Ich verwendet, in einer anderen Sortierung der PR-Werte und es funktioniert, das ist, warum ich denke, das hat etwas zu tun mit float-Werte oder zumindest 0.X
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachtrag zu Pedro ' s-follow. Wenn Sie Sortieren möchten TFIDF, dann durch PR,
Ok, aus deinem Kommentar das Problem, das Sie haben, ist, dass Sie den Abzug-code in Ihre Komparator, aber als float-Werte, die Differenz ist weniger als
1
(absoluter Wert), Gießenint
immer Runden zu0
.Verwenden Sie einen allgemeineren form, mit
if
Als ich sagte, wie kommst du auf die
compare
Ergebnis Wert (solange es zusammenhängend ist) ist nicht mit der Sortierung.Warum bist du dann vergleichen
PR
Werte mito1.GetPR()
Versuchen Vergleich der
TFIDF
Werte in deiner compare-Methode (aber wie bereits erwähnt casting nach int wird immer Runder int-Wert also 0)So könnten Sie
In Java 8 mit lambda-Funktionen ist jetzt sehr einfach zu vergleichen, zwei Schwimmer, die in einer Objekt-Liste. Ich verwende in diesem Beispiel die beiden lambda-Funktionen und funktionalen Operationen (neue features in Java 8). In deiner main können Sie versuchen, dieses Beispiel. In diesem Beispiel ordnen Sie Menschen, die von Schwimmern vertreten, dass die Höhe :
Dies ist meine Klasse Person
Ausgabe :
Zweiten
Administrator
Ersten
So, ich denke, dieses Beispiel ist es einfacher zu verstehen JAVA-8-features. In der Dokumentation, die Sie versuchen, ein ähnliches Beispiel, aber mit Streichern, die eine andere Methode verwenden. (Oracle-offizielle Dokumentation zu lambda-Funktionen mit Auflistung Beispiel)