Stream Api - способ работать со структурами данных в функциональном стиле. Чаще всего с помощью stream в Java 8 работают с коллекциями, но на самом деле этот механизм может использоваться и для других задач. Не работает с примитивами за исключением int, long, double для которых есть отдельные Stream.
Конвейерные операторы - возвращают новый Stream и не выполняются без терминального оператора.
После вызова терминального метода, поток завершиться и повторный вызов вернет ошибку IllegalStateException.
var list = List.of("A", "B", "C"); var matchingElements = Stream.of("B", "C", "D") .anyMatch(list::contains);
var list = List.of("A", "B", "C"); var matchingElements = List.of("B", "C", "D") .stream() .filter(list::contains) .toList();
var list = List.of("A", "B", "C"); var matchingElements = List.of("B", "C", "D") .stream() .filter(element -> !list.contains(element)) .toList();
var latencies = Stream.of(10, 3, 6, 7, 8, 8, 9, 13, 15, 16, 20).toList(); System.out.println(percentile(latencies, 25)); System.out.println(percentile(latencies, 50)); System.out.println(percentile(latencies, 75)); System.out.println(percentile(latencies, 100)); public static long percentile(List<Integer> latencies, double percentile) { int index = (int) Math.ceil(percentile / 100.0 * latencies.size()); return latencies.get(index-1); }
var latencies = Stream.of(10, 3, 6, 7, 8, 8, 9, 13, 15, 16, 20).toList(); System.out.println(percentile(latencies, 25)); System.out.println(percentile(latencies, 50)); System.out.println(percentile(latencies, 75)); System.out.println(percentile(latencies, 100)); public static long percentile(List<Integer> latencies, double percentile) { int index = (int) Math.ceil(percentile / 100.0 * latencies.size()); return latencies.get(index-1); }
var list = Stream.of("1", "2", "3").toList(); var map = list.stream().collect(Collectors.toMap(i -> i, i -> "sample"));