Вступление
В языке программирования Java типом коллекции, подобным списку, можно управлять с помощью Stream
.
Необязательный Тип Данных
При использовании Stream
существует тип данных, называемый Необязательным
. Необязательный
тип данных означает данные, допускающие нулевое значение. Некоторые Потоковые
функции используют Необязательно
в качестве возвращаемого значения.
Когда есть функция, которая возвращает Необязательный
тип данных. Результат должен быть проверен с помощью функции isPresent()
, чтобы убедиться, что значение существует или не равно null.
Использование Java Stream
Чтобы использовать Stream
в Java, импортируйте пакет |/Stream .
import java.util.stream.*;
Затем преобразуйте коллекцию в Stream
с помощью функции stream()
.
// Basic syntax collection_name.stream()
функция отображения
Функция map
используется для создания механизма сопоставления в коллекции. В этом примере все данные внутри коллекции умножаются на 2.
Listnumbers = new ArrayList<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); // using map function List updatedNumbers = numbers .stream() .map((i) -> i * 2) .collect(Collectors.toList()); System.out.println(updatedNumbers);
Выход
[2, 4, 6, 8]
Основываясь на приведенном выше коде, лямбда-функция (анонимная функция) добавляется внутри функции map()
для умножения всех данных внутри коллекции на 2. Лямбда-выражение, определенное внутри функции map()
, является (i) -> i * 2
. Затем результат функции map()
возвращает Поток
, который может быть собран в список с помощью collect(Коллекторы.ToList())
функция.
функция суммирования
Функция sum
полезна для вычисления суммы значений внутри коллекции. Эта функция подходит для коллекции, содержащей числовые значения.
В этом примере сумма используется в numbers
collection.
Коллекция numbers
определена в разделе map
.
// using sum function int sum = numbers.stream().mapToInt(i -> i).sum(); System.out.println(sum);
Выход
10
Основываясь на приведенном выше коде, тип данных результата sum возвращается на основе типа коллекции. Потому что тип коллекции numbers
представляет собой коллекцию целых чисел. Тип данных результата sum – integer.
средняя функция
Функция average используется для вычисления среднего значения значений внутри коллекции. Эта функция подходит для коллекции, содержащей числовые значения.
В этом примере среднее значение используется в numbers
collection.
// using average method OptionalDouble average = numbers.stream().mapToInt(i -> i).average(); // check if the value is exists if (average.isPresent()) { System.out.println(average.getAsDouble()); }
Выход
2.5
Основываясь на приведенном выше коде, средний результат возвращает Необязательный
тип данных. Чтобы проверить, существует ли значение, используйте функцию isPresent()
, после чего к значению можно будет безопасно получить доступ.
максимальная и минимальная функция
Функция max
используется для нахождения максимального значения. Функция main
используется для нахождения минимального значения.
В этом примере эти функции используются в коллекции numbers
.
Optionalmax = numbers.stream().max(Comparator.naturalOrder()); Optional min = numbers.stream().min(Comparator.naturalOrder()); if (max.isPresent() && min.isPresent()) { System.out.println("maximum value: " + max.get()); System.out.println("minimum value: " + min.get()); }
Выход
maximum value: 4 minimum value: 1
На основе приведенного выше кода возвращается максимальное и минимальное значение. Поскольку обе эти функции возвращают Необязательный
тип данных, используется функция isPresent()
. Comparator.naturalOrder()
используется внутри max()
и min()
функция для определения компаратора по умолчанию.
функция фильтра
Функция filter
используется для выбора некоторых значений на основе определенных критериев или условий.
В этом примере функция filter
используется для выбора только четных значений в коллекции numbers
.
// using filter to filter only even values Listintegers = numbers .stream() .filter(integer -> integer % 2 == 0) .collect(Collectors.toList()); System.out.println(integers);
Выход
[2, 4]
Основываясь на приведенном выше коде, возвращаемое значение из функции filter()
представляет собой Поток
, значения которого можно собирать с помощью collect(Коллекторы.ToList())
. Результат работы функции filter()
содержит только четное значение.
Функция allMatch
Функция allMatch
используется для проверки того, все значения внутри коллекции соответствуют определенным критериям или условиям.
В этом примере allMatch
используется для проверки четности всех значений внутри коллекции numbers
.
// using allMatch to check if all values is even boolean allMatch = numbers.stream().allMatch(integer -> integer % 2 == 0); System.out.println(allMatch);
Выход
false
Основываясь на приведенном выше коде, коллекция numbers
( [1,2,3,4]
) имеет четные значения, но других значений нет, поэтому возвращается false
.
любая функция сопоставления
Функция any Match
используется для проверки соответствия определенного значения определенным критериям или условию.
В этом примере any Match
используется для проверки четности определенного значения в коллекции numbers |/.
// using anyMatch to check if a certain value is even boolean anyMatch = numbers.stream() .anyMatch(integer -> integer % 2 == 0); System.out.println(anyMatch);
Выход
true
Основываясь на приведенном выше коде, внутри numbers есть четное значение
коллекция таким образом, возвращается значение true
.
отсортированная функция
Функция sorted
используется для сортировки значений внутри коллекции. По умолчанию функция sorted
сортирует значение от наименьшего к наибольшему значению.
В этом примере функция sorted
используется для сортировки значения внутри коллекции myNums
.
ListmyNums = new ArrayList<>(); myNums.add(44); myNums.add(24); myNums.add(1); myNums.add(19); // using sorted to sort the collection List sortedNums = myNums.stream().sorted().collect(Collectors.toList()); System.out.println("Sorted list: " + sortedNums);
Выход
Sorted list: [1, 19, 24, 44]
На основе приведенного выше кода значение сортируется от наименьшего значения к наибольшему значению.
Записи
- Используйте функции
Stream
в зависимости от вариантов использования. - Когда функция
Stream
возвращаетНеобязательный
тип данных, проверьте существование значения с помощьюis Present()
, чтобы убедиться, что значение существует или не равно null.
Это заключительная часть серии учебных пособий по java basic в этом блоге. Я надеюсь, что эта серия учебных пособий по Java basic будет полезна для изучения языка программирования Java 😀 .
Источники
- Узнайте больше о Java Stream по этой ссылке //.
Я надеюсь, что эта статья будет полезна для изучения языка программирования Java. Если у вас есть какие-либо мысли или комментарии, вы можете написать в разделе обсуждения ниже.
Оригинал: “https://dev.to/nadirbasalamah/java-tutorial-11-stream-3a3n”