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