• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie listy

Object Storage Arubacloud
0 głosów
433 wizyt
pytanie zadane 12 marca 2017 w Java przez Szymon Ciamaga Obywatel (1,980 p.)

Witam mam problem z posortowaniem listy rosnąco po imionach szukałem w internecie pół dnia rozwiązania, niestety nie znalazłem odpowiedzi.

public class Main {
    public static void main(String[] args) {
        ArrayList<Person> people = new ArrayList<>();

        people.add(new Person("Daniel", "derowski", 25));
        people.add(new Person("Aniela", "Aniolowska", 52));
        people.add(new Person("Bartłomiej", "Barowski", 21));
        people.add(new Person("Cecylia", "celowska", 19));

        people
                .stream()
                .sorted((o1, o2) -> o1.getName().compareTo(o2.getName()))
                .collect(Collectors.toList());

        System.out.println(people);

    }
}

 

2 odpowiedzi

+1 głos
odpowiedź 12 marca 2017 przez Mateusz51 Nałogowiec (28,180 p.)
wybrane 19 marca 2017 przez Szymon Ciamaga
 
Najlepsza
collect zwraca Ci nową liste której do niczego nie przypisujesz.
komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)

tak ?

        List<Person> collect = people
                .stream()
                .sorted((o1, o2) -> o1.getName().compareTo(o2.getName()))
                .collect(Collectors.toList());

        System.out.println(collect);
komentarz 12 marca 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Tak
komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
to dalej jest to samo xd
komentarz 12 marca 2017 przez Mateusz51 Nałogowiec (28,180 p.)
A jeszcze pytanie. Dlaczego robisz printlin na kolekcji a nie na elementach kolekcji?
komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
a dobra działa jednak a jeszcze mam pytanie. Gdybym chciał odwrócić teraz tą liste ? tak by od tyłu była ?
komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
To znaczy co masz na myśli a jak powinno być może z nie wiedzy.
komentarz 12 marca 2017 przez Mateusz51 Nałogowiec (28,180 p.)
Chodziło mi dlaczego robisz sysout(list) ale przeczytałem że to powinno zadziałać.

to musisz lambde w sort zmienic. Zobacz co i kiedy zwraca metoda compareTo.
ale pomnożenie wyniku przez -1 powinno załatwić sprawe
+1 głos
odpowiedź 12 marca 2017 przez Andrus19 Bywalec (2,260 p.)
.sorted(Comparator.comparing(Person::getName));

ewentualnie jak potrzebujesz odwróconej to 

.sorted(Comparator.comparing(Person::getName).reversed());

 

komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
   Stream<Person> sorted = people
                .stream()
                .sorted(Comparator.comparing(Person::getName).reversed());
        System.out.println(sorted);

tak wyświetla mi miejsce w pamięci

 

komentarz 12 marca 2017 przez Andrus19 Bywalec (2,260 p.)
no tak, to collect dodaj tak jak miałeś.
komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
gdy dodaje mam błąd kompilacji ;/
komentarz 12 marca 2017 przez Andrus19 Bywalec (2,260 p.)

jeśli robisz collect(toList) to wtedy musisz zadeklarować to jako listę :

List<Person> sorted = people.stream()
.sorted(Comparator.comparing(Person::getName).reversed())
.collect(Collectors.toList());

 

Ewentualnie jak nie chcesz zapisywać a tylko wyświetlić posortowaną listę to na końcu możesz dodać 

.forEach(System.out::println)

 

komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
zależy mi na tym by została zapisany ale gdy używam .collect(Collectors.toList());  to dostaje błąd
komentarz 12 marca 2017 przez Andrus19 Bywalec (2,260 p.)
to pokaż jaki błąd
komentarz 12 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)
Error:(21, 17) java: illegal start of expression
komentarz 12 marca 2017 przez Andrus19 Bywalec (2,260 p.)
List<Person> sorted = people.stream()
        .sorted(Comparator.comparing(Person::getName).reversed())
        .collect(Collectors.toList());
komentarz 13 marca 2017 przez Szymon Ciamaga Obywatel (1,980 p.)

Mam dokładnie tak

Podobne pytania

0 głosów
0 odpowiedzi 146 wizyt
pytanie zadane 23 stycznia 2021 w Java przez Kazek Początkujący (460 p.)
0 głosów
1 odpowiedź 353 wizyt
pytanie zadane 30 lipca 2020 w Java przez lucyliu Początkujący (370 p.)
0 głosów
3 odpowiedzi 371 wizyt
pytanie zadane 17 grudnia 2018 w Java przez andrut Użytkownik (870 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...