Przejdź do treści
Strona główna » Java 8 – jakie wprowadza nowości ?

Java 8 – jakie wprowadza nowości ?

Pytania rekrutacyjne związane z JAVA 8

Częstym pytaniem rekrutacyjnym jest „Jakie nowości wprowadza JAVA 8 w stosunku do JAVA7” ?

To pytanie bardzo dużo mówi o programiście…. a mianowicie-> czy w ogóle programował przez ostatnie 3-5 lat, czy tylko siedział i odcinał kupony. JAVA 8 kompletne zmienia sposób definiowania wszystkich pętli zastępując je streamami.

Chcąc przeiterować i wypisać najprostszą listę w JAVA 7 użyłbym takiego kodu

List<Integer> integers = Arrays.asList(1, 2, 3);


        for (Integer integer : integers) {
            System.out.println(integer);
        }

Natomiast w JAVA 8:

List<Integer> integers = Arrays.asList(1, 2, 3);

integers.stream().forEach(System.out::println);

Widzimy tutaj użycie streama na liście oraz lambdy w argumencie. Jeśli kandydat nie widzi żadnej różnicy między programowaniem w JAVA 7 i JAVA 8, to znaczy, że za mocno się nie napracował przez ostatnie lata albo utrzymywał stare projekty w JAVA 7 –.

Jakie możliwości dają streamy?

To kolejne pytanie jakie może paść. Co dodatkowo, oprócz iterowanie po liście, dają streamy ? Najprostszą jest np. przemapowanie listy na inna listę.

List<String> collect = integers.stream()
.map(String::valueOf)
.collect(Collectors.toList());

W tym kawałku kodu używając stream i metody map() mapujemy listę obiektów typu INTEGER na listę obiektów String. Tutaj właśnie metoda collect() umożliwia przepisanie do listy albo do setu itp. – tak zwany collector.

Na sam koniec napiszemy trochę bardziej skomplikowaną konstrukcje z użyciem flatmap, aby zaprezentować bogate możliwości Streamów z JAVA 8, które należało robić naokoło z użyciem znacznie większej ilości kodu. w JAVA 7 –.

        List<Integer> integers = Arrays.asList(1,1);
        List<Integer> integers1 = Arrays.asList(100,100);

        List<List<Integer>> lists = Arrays.asList(integers1, integers);

        int sum = lists.stream()
        .flatMap(x -> x.stream())
        .mapToInt(Integer::intValue)
        .sum();

        System.out.println(sum);

W tym bloku kodu mamy 2 listy typu Integer oraz 3 listę, która składa się z 2-ch poprzednich list.

Nasz kod używa flatmapy, żeby zmergować 2 listy w 1 listę intów.

Dalej mapuje wartość Integer do IntStream, żeby moć dokonać sumy i sumuje w locie wszytkie obiekty zapisując do zmiennej sum.

W rezultacie ten blok kodu zwróci 202.

Te i wiele innych znajomości funkcji stream rekruterzy sprawdzają na rozmowach rekrutacyjnych, stąd warto je znać. Na naszych szkoleniach z JAVA mocno je wertujemy.

Pozdrawiamy,

Zespół Great

blog

Tagi:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *