|
Sortowanie obiektów poprzez przypisanie mechanizmu porównującego obiekt. Aby obiekty można było sortować w wyjątkowy dla nich sposób należy zdefiniować funkcję porównywującą je do siebie. Jest to istotne aby podczas sortowania było wiadomo, który obiekt jest starszy (wyżej na liście), a który młodszy. Funkcja porównująca zwraca wartość liczbową: int WYNIK_FUNKCJI = X.compareTo(Y); gdy: - WYNIK_FUNKCJI < 0 to obiekt X jest mniejszy od obiektu Y, - WYNIK_FUNKCJI = 0 to obiekt X jest równy obiektowi Y, - WYNIK_FUNKCJI > 0 to obiekt X jest większy od obiektu Y.
W praktyce: class Osoba implements Comparable<Osoba> { private String imie; private String nazwisko; public int compareTo(Osoba o) { int compare = nazwisko.compareTo(o.nazwisko); if(compare==0) compare = imie.compareTo(o.imie); return compare; } } Powyższy przykład sortuje po nazwisku a jeżeli spór nie zostanie rozstrzygnięty to bierze pod uwagę imię. W skrócie: sortowanie po nazwisku i imieniu. Sortowanie po wybranych właściwościach obiektu. Może się tak zdarzyć że w wyjątkowej sytuacji trzeba posortować listę obiektów po innych własnościach. Jest to możliwe dzięki porównywaczowi (Comparator). W praktyce: Collections.sort(tab, new Comparator<Osoba>() { public int compare(Osoba a , Osoba b) { return a.imie.compareTo(b.imie); } }); gdzie: Osoba jest klasą z poprzedniego przykładu. Przykład sortuje tylko po imieniu.
|