Próbuję posortować tablicę obiektów według określonej wartości w obiekcie. Jakie byłoby najlepsze podejście do zrobienia takiej rzeczy. Czy powinienem używać Collections.sort () z jakimś komparatorem?
Próbuję posortować listę obiektów według wartości typu float, które przechowują w jednej ze zmiennych.
EDYCJA: To, co mam do tej pory:
public class CustomComparator implements Comparator<Marker> {
@Override
public int compare(Mark o1, Mark o2) {
return o1.getDistance().compareTo(o2.getDistance());
}
}
błąd stwierdza: Nie można wywołać funkcji compareTo (double) na typie pierwotnym double.
Czy to dlatego, że komparator nie może zwrócić niczego innego niż określony typ?
java
android
sorting
collections
comparator
James andresakis
źródło
źródło
Odpowiedzi:
Powinieneś użyć Porównywalny zamiast Komparatora, jeśli szukasz domyślnego sortowania.
Zobacz tutaj, może to trochę pomóc - Kiedy klasa powinna być porównywalna i / lub komparatorowa?
Spróbuj tego -
źródło
Postępuj zgodnie z tym kodem, aby posortować dowolną ArrayList
źródło
Myślę, że to pomoże ci lepiej
źródło
Teraz nie ma potrzeby boksu (tj. Nie ma potrzeby tworzenia
OBJECT
przy użyciu nowego operatora, użyj valueOf wstawionego z compareTo of Collections.Sort ..)1) W porządku rosnącym
1) Dla porządku rosnącego
źródło
„Android-java” nie różni się tutaj w żaden sposób od „normalnej java”, więc tak
Collections.sort()
byłoby dobrym podejściem.źródło
Jak używać:
źródło
Możesz porównać dwa ciągi, używając tego.
A teraz utwórz klasę ContactData.
Tutaj lista kontaktów to:
źródło
Albo stwórz coś,
Comparator
co może porównać twoje obiekty, albo jeśli wszystkie są instancjami tej samej klasy, możesz sprawić, by klasa była implementowanaComparable
. Następnie możesz użyć Collections.sort () do właściwego sortowania.źródło
compareTo()
-metoda to miejsce, w którym wykonujesz porównanie. Trochę googlowania podało kilka szczegółowych przykładów, jak go używać, oto jeden z nich: javadeveloper.co.in/java-example/java-comparable-example.htmlKlasa modelu:
Teraz ustaw dane w ArrayList
Teraz Sortuj ArrayList
Podsumowanie: posortuje dane według danych
źródło
W przypadku Kotlina możesz użyć tej funkcji
i po prostu zadzwoń do tego w swoim
activity
lubfragment
przezźródło
Mam widok listy, który pokazuje informacje o wszystkich klientach. Sortuję nazwy klientów przy użyciu tej niestandardowej klasy porównawczej. Oprócz angielskich liter, którymi zarządzam za pomocą tego setStrength (Collator.
źródło
Dla Kotlina to bardzo proste!
listToBeSorted.sortBy { it.distance }
źródło