Метод stream
Метод stream класса Arrays преобразует массив в поток данных.
В качестве параметра метод принимает исходный массив, элементы которого
нужно превратить в поток. Метод возвращает объект типа Stream,
с которым можно работать дальше: фильтровать, сортировать, преобразовывать
элементы и так далее. Исходный массив при этом не изменяется.
Существует несколько перегруженных версий метода для разных типов данных:
для int[], long[], double[] и для массивов объектов
(T[]).
Синтаксис
Arrays.stream(array)
Arrays.stream(array, startInclusive, endExclusive)
Пример
Давайте создадим поток из массива целых чисел и выведем каждый элемент
на экран с помощью метода forEach:
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{
int[] arr = {1, 2, 3, 4, 5};
Arrays.stream(arr).forEach(System.out::println);
}
}
Результат выполнения кода:
1
2
3
4
5
Пример
Давайте создадим поток из части массива, указав начальный и конечный индексы (конечный индекс не включается), и найдем сумму элементов:
import java.util.Arrays;
public class Main
{
public static void main(String[] args)
{
int[] arr = {1, 2, 3, 4, 5};
int sum = Arrays.stream(arr, 1, 4).sum();
System.out.println(sum);
}
}
Результат выполнения кода:
9
Пример
Давайте создадим поток из массива строк, отфильтруем элементы и соберем результат в список:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
String[] arr = {"abcde", "12345", "abc", "123"};
List<String> res = Arrays.stream(arr)
.filter(s -> s.length() > 3)
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[abcde, 12345]