Вступление
В языке программирования 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”