Если вы планируете делать операцию с большими объемами данных, то в этом вам точно поможет Java Stream API и его методы. Запомнить их не так уж сложно. Сегодня рассмотрим **метод для суммирования чисел в примере выше – IntStream.sum()**. Основная задача данного метода – **сложить все элементы выбранного потока**. При этом любое число или булево значение мы без проблем складываем (или умножаем, если угодно) с ним. Да, в конце концов мы получаем double-значение, но в Java мы привыкли к типу double, потому что он тут играет ведущую роль. Итак, давайте разберемся. А сделать это и не получится без знания **более продвинутого функционального интерфейса java 8** – Supplier. Если в Simple stream we привыкли одним лишь методом sum() оперировать с одной коренной коллекцией, которая до этого была указана как источник данных, то используя supplier** мы можем генерировать новые источники данных каждый раз без повторений**. Для этого нам нужно указать тип данных для которых нам нужна генерация новых источников, тем самым мы установим границы для метода. По сути мы создаем особый класс, который несет значения и выполняет какие-то операции, например создает поток. Выглядеть это будет вот так: Источник источников = supplier::get;
В Java8 это выглядит примерно так:
public int[] sumSources(int[] numbersArray) { int sum = numbersArray.length == 0? 0 : numbersArray[0]; final int[] arr = new int[numbersArray.length]; for(int i = 0 , j = 1 ; i < numbersArray.lenght ; i++) arr[i] = rown[i] + arr[i]; // создаем новый источник для последующего запроса методов с помощью Stream api return arr; } Тут у нас есть генератор источника и запрашивающий. Нет ли