Wstęp do Streams w Java 8 #12

      3 komentarze do Wstęp do Streams w Java 8 #12

Dzisiaj przedstawię Wam krótką idee streamów w Java 8. Sprawdzimy w praktyce co to jest i jaką nam dają przewagę nad zwykłymi operacjami przy obsługiwaniu różnego rodzaju kolekcji. Sprawdzimy zatem jak to było przed Java 8, a jak teraz jest 🙂

Streamy pojawiły się w API Javy w wersji 8. Możemy o nich myśleć jak o narzędziu, które pomaga nam manipulować kolekcjami Javy jak listy, sety, mapy etc itd. Bardzo ważną cechą streamów jest to, że mogą pracować w wielu wątkach, a my w ogóle nie musimy pisać kodu, który to obsłuży. Programowanie wielowątkowe nigdy nie było prostsze w Javie :). Oczywiście wszystko to jeszcze sobie omówimy.

Zobaczmy jak wygląda praca z kolekcjami w przed pojawieniem się streamów i po:

Definiuję sobie listę przedmiotów:

 

Kod przed pojawieniem się streamów:

Chciałbym wyodrębnić książki, które są tańsze niż 49.99:

Teraz chciałbym posortować moją listę:

Teraz chcę z posortowanej listy wybrać tylko nazwy książki:

I na koniec wypisuję do konsoli:

Wynik:

 

Kod po pojawieniu streamów:

Wynik:

Jak sami widzicie, pisanie z użyciem streamów zaoszczędzi nam mnóstwo czasu, zniweluje potencjalne błędy, do tego będziemy mogli zastosować wielowątkowość i niczym się nie martwić. Nasz kod jest zwięzły i czytelny. Przewaga tego rozwiązania jest ogromna.

W streamach drzemie ogromna moc i możliwości. Mam nadzieje, że Was zaciekawiłem!

Jak zwykle kod na githubie.

3 thoughts on “Wstęp do Streams w Java 8 #12

  1. killer

    Hej,
    W ostatnim przykładzie nie ma potrzeby zapisywania stream’u jako listy w celu wyświetlenia wartości.
    list.stream()
    .filter(b -> b.price b.getTitle())
    .forEach(System.out::println);

    Reply
    1. killer

      coś się wycięło a nie ma możliwości edycji komentarza
      list.stream()
      .filter(b -> b.price b.getTitle()).
      .forEach(System.out::println);

      Reply
  2. Janek

    Wszytko ok, tylko mapy tak naprawdę nie są kolekcjami i bezpośrednio na nich nie możemy wywołać metody stream (), tak jak twierdzisz w artykule. Możemy to zrobić jedynie po „dostaniu się” do mapy za pomocą Entry.Set, ale wówczas nie operujemy już na mapie ale na wyciągniętej kolekcji Set

    Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *