Wstęp do Streams w Java 8 #12

      2 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.

2 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

Odpowiedz na „killerAnuluj pisanie odpowiedzi

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