1. Обзор
В этом руководстве мы собираемся продемонстрировать, как реализовать логику if/else с потоками
Java 8 . В рамках этого руководства мы создадим простой алгоритм для определения нечетных и четных чисел.
Мы можем взглянуть на эту статью , чтобы наверстать упущенное в основах Java 8 Stream .
2. Обычная логика if/else
внутри forEach()
Прежде всего, давайте создадим список целых чисел
, а затем воспользуемся обычной логикой if/else в методе
потока целых чисел forEach()
:
List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
ints.stream()
.forEach(i -> {
if (i.intValue() % 2 == 0) {
Assert.assertTrue(i.intValue() % 2 == 0);
} else {
Assert.assertTrue(i.intValue() % 2 != 0);
}
});
Наш метод forEach
содержит логику if-else, которая проверяет, является ли Integer
нечетным или четным числом , используя оператор модуля Java.
3. Логика if/else с
фильтром()
Во-вторых, давайте рассмотрим более элегантную реализацию с использованием метода Stream filter()
:
Stream<Integer> evenIntegers = ints.stream()
.filter(i -> i.intValue() % 2 == 0);
Stream<Integer> oddIntegers = ints.stream()
.filter(i -> i.intValue() % 2 != 0);
evenIntegers.forEach(i -> Assert.assertTrue(i.intValue() % 2 == 0));
oddIntegers.forEach(i -> Assert.assertTrue(i.intValue() % 2 != 0));
Выше мы реализовали логику if/else с помощью метода Stream filter() ,
чтобы разделить список
целых чисел на два потока Stream
, один для четных целых чисел, а другой для нечетных.
4. Вывод
В этой быстрой статье мы рассмотрели, как создать поток
Java 8 и как реализовать логику if/else с помощью метода forEach()
.
Кроме того, мы узнали, как использовать метод Stream filter
для достижения аналогичного результата более элегантным способом.
Наконец, полный исходный код, использованный в этом руководстве, доступен на Github .