Sammlungen.sort() mit Komparator?
import java.util.*;
public class C_2 {
public static void main(String args[]) {
String theStrings[] = { "x", "a", "b", "c", "d" };
List l = Arrays.asList(theStrings);
Collections.sort(l); //line a
Collections.sort(l, new ThisIsMyThing()); //line b
System.out.println(l);
}
}
class ThisIsMyThing implements Comparator {
public int compare(Object o1, Object o2) {
String s1 = (String)o1;
String s2 = (String)o2;
return -1 * s1.compareTo(s2);
}
}
Verstehe ich, dass die Klasse C_2
funktioniert die Sortierung basiert auf zwei unterschiedlichen Techniken.
Die eine ist die standard - Collections.sort(l);
Und der andere ist Collections.sort(l,Comparator<>());
ich bin nicht in der Lage zu verstehen, diese Methode "sort". Kann jemand bitte erklären Sie es mir?
Was verstehen Sie nicht? Hast du die Dokumentation gelesen?
Sammlungen.sort(l) // Linie a dies sortiert die Liste nach den natürlichen bestellen, richtig? Sammlungen.sort(l, new ThisIsMyThing()); // Linie b implementiert einen Komparator, in dem die Parameter sind vom Typ object. dann sind Typ gecastet zu string. Der Vergleich erfolgt zwischen den Saiten?
Ja. Beachten Sie, dass Sie sollten mit Generika.
Sammlungen.sort(l) // Linie a dies sortiert die Liste nach den natürlichen bestellen, richtig? Sammlungen.sort(l, new ThisIsMyThing()); // Linie b implementiert einen Komparator, in dem die Parameter sind vom Typ object. dann sind Typ gecastet zu string. Der Vergleich erfolgt zwischen den Saiten?
Ja. Beachten Sie, dass Sie sollten mit Generika.
InformationsquelleAutor hakuna12 | 2013-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Collection.sort(l)
davon ausgegangen, dass der Inhaltl
sindComparable
.Collection.sort(1, Comparator)
verwendet eine benutzerdefinierte Komparator zum vergleichen der Inhalte vonl
, das ist, was Sie getan haben. Die Idee der Sortierung (einschließlich dersort()
Methode) setzt Voraus, dass die Objekte MÜSSEN vergleichbar sein - in diesem Fall mit entwederComparable
oderComparator
.Beachten Sie, dass viele Java-Objekte sind vergleichbar bereits, einschließlich
String
,Date
undNumber
. Für diejenigen, die Sie nutzen könnenCollection.sort(someList);
Beispiel
Sagen, Sie haben eine
Circle
KlasseWenn Sie 100
Circle
Objekte:Kann man nicht Sortieren, denn Java hat keine Ahnung, wie Sie zu vergleichen. Sie haben zu sagen, dieses zu Java:
Mit der
compareTo()
- Methode in der Circle-Klasse Java jetzt weiß, wie Sie zu vergleichen und kann diese Sortieren.Nun können Sie dies tun:
akzeptiert nur ein
List
argument.Doch auch die überarbeitete version ist nicht wahr.
Collections.sort
ist eine statische Methode, die auf derCollections
Klasse, die akzeptiert nur einList
argument. Jeder - Klasse aufrufen kannCollections.sort
, ob es implementiertCollection
oder nicht, ist doch egal, wer die Berufung auf Sie nur einList
argument übergeben werden kann.InformationsquelleAutor Paul Samsotha
Sammlungen.Sortieren, das dauert comparator sortiert die Liste basiert auf den Komparator zur Verfügung gestellt, die von Ihnen und anderen folgt der natürlichen Reihenfolge.Das ist, wenn Sie wollen, Folgen Sie benutzerdefiniertes Sortieren um dann diese Methode verwenden. Und es gibt nicht viel zu erklären.
Benutzen Sie diesen link für die Erklärung.
InformationsquelleAutor Shoaib Chikate
Sortierung einer collection erfolgt über die Sammlungen.sort(Sammlung) - Sortieren Sie Ihre Werte. Diese Methode ist für diejenigen, die implementiert
Comparable
- Schnittstelle. Dieses interface definiert die Methodecompare
führt, die einen paarweisen Vergleich der Elemente und gibt -1 zurück, wenn das element kleiner als das element im Vergleich, 0 wenn Sie gleich sind und 1, wenn es größer ist. Ein gängiges Beispiel sind Integer-Klasse.Wenn was anders sortiert definieren Sie Ihre eigene Implementierung auf der Grundlage der
Comparator
- Schnittstelle.Dieser Ansatz ist dann, dass die Art jedes Objekt ein Attribut oder sogar eine Kombination von Attributen. Zum Beispiel, wenn Sie Objekte vom Typ Person mit einem Attribut Einkommen und dateOfBirth definieren Sie verschiedene Implementationen von Comparator und Sortieren Sie die Objekte nach Ihren Bedürfnissen.InformationsquelleAutor shikjohari