Aktywne Wpisy

fsfdjf +18
zimno, śnieżnie i fajnie, ale niektóre kasztany nie odśnieżają przed domami i trzeba się przedzierać przez zaspy śniegu jak na sybirze jakim
źródło: image_picker_75E0C8FE-53FA-479A-9834-DB819599DD89-14796-000018D21BE906E3
Pobierz
serio_serio +2
mówił Wam kiedyś lekarz, że macie bardzo ładny cukier albo coś innego?





Czy ktoś jest mi w stanie wytłumaczyć dlaczego moja lista obiektów Purchase (String id, String name), nie sortuje się poprawnie w przypadku takiego samego name? W takim przypadku powinienem napisać kod, który posortuje je rosnąco według id.
Błąd najprawdopodobniej jest gdzieś w tej części kodu:
Collections.sort(purchaseList, new Comparator() {
public int compare(Purchase p1, Purchase p2) {
if(p1.name != p2.name) { //rozne nazwiska
return p1.name.compareTo(p2.name);
}else { //te same nazwiska
return p1.id.compareTo(p2.id);
}
}
});
Np. dla:
c00003 Kowalski
c00001 Kowalski
powinno posortowac:
c00001 Kowalski
c00003 Kowalski
A u mnie c00003 pozostaje pierwsze.
@Ludzik_Lego: bo używasz operatora != zamiast metody equals
https://stackoverflow.com/questions/13387742/compare-two-objects-with-equals-and-operator
Używanie equals przy pisaniu Comparatora jest jakieś takie dziwne.
Nie lepiej Comparator.comparing(Putchase::getName).thenComparing(Purchase::getId)?
Dzięki temu mógłbyś zastąpić swój kod poprzez:
Collections.sort(purchaseList, Comparator.comparing(Purchase::getName).thenComparing(Purchase::getId))