Java Streams - spojeny sumar (vsetky poznamky)
[1] Java Streams - zber, redukcia, IntStream
.filter(x -> <some condition>) // necha tie, co splnia podmienku
.allMatch(x -> <some_condition>)
.anyMatch(x -> <some_condition>)
.collect(Collectors.toList())
.collect(Collectors.toMap(
k -> k,
val -> val,
(a, b) -> a + b // optional merge function (spajanie duplicit)
))
.reduce((a, b) -> a + b)
.reduce(100, (a, b) -> a + b) // s pociatocnou hodnotou
// Pri prazdnom streame sa bez identity lahko dostanes k erroru.
.distinct()
.flatMap(x -> array) // vysledok je 1D array (concat vrateneho)
.sorted()
.limit(n)
.skip(n)
Arrays.stream("nejaka abeceda".split("")) // toCharArray nepouzivat
IntStream.rangeClosed(a, b) // inclusive range
IntStream.range(a, b).boxed() // vrati Stream<Integer>
IntStream.range(a, b).boxed().toList() // vrati List
IntStream.range(1, 100).boxed().max(Integer::compareTo).get()
IntStream.range(1, 100).max().getAsInt()
[2] Intermediate operacie (lazy, vracaju Stream)
.filter(e -> e % 2 == 0) // filtrovanie
.map(e -> e * e) // transformacia kazdeho prvku
.flatMap(e -> Stream.of(...)) // rozbalenie vnoreneho streamu
.sorted() // prirodzene zoradenie
.sorted((a, b) -> ...) // vlastny comparator
.distinct() // odstranenie duplikatov
.limit(n) // prvych n prvkov
.skip(n) // preskoci prvych n
.peek(e -> ...) // nahlad bez zmeny (debug)
.takeWhile(e -> e < 10) // berie kym plati podmienka
.dropWhile(e -> e < 10) // vyhadzuje kym plati podmienka
.parallel() // prepne na paralelny
.sequential() // prepne na sekvencny