Рубрики
Без рубрики

Java 8 Поток findFirst() и найти любой()

– – Java 8 Поток findFirst() и найти любой()

Автор оригинала: mkyong.

В потоке Java 8 findFirst() возвращает первый элемент из потока, в то время как find Any() возвращает любой элемент из потока.

1. Найти первым()

1.1 Найдите первый элемент из потока целых чисел.

package com.mkyong.java8;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class Java8FindFirstExample1 {

    public static void main(String[] args) {

        List list = Arrays.asList(1, 2, 3, 2, 1);

        Optional first = list.stream().findFirst();
        if (first.isPresent()) {
            Integer result = first.get();
            System.out.println(result);       // 1
        } else {
            System.out.println("no value?");
        }

        Optional first2 = list
                .stream()
                .filter(x -> x > 1).findFirst();

        if (first2.isPresent()) {
            System.out.println(first2.get()); // 2
        } else {
            System.out.println("no value?");
        }
    }

}

Выход

1
2

1.2 Найдите первый элемент из потока строк, который не равен “узлу”.

package com.mkyong.java8;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class Java8FindFirstExample2 {

    public static void main(String[] args) {

        List list = Arrays.asList("node", "java", "python", "ruby");

        Optional result = list.stream()
                .filter(x -> !x.equalsIgnoreCase("node"))
                .findFirst();

        if (result.isPresent()) {
            System.out.println(result.get()); // java
        } else {
            System.out.println("no value?");
        }

    }

}

Выход

java

2. найдите Любой()

2.1 Найдите любой элемент из потока целых чисел. Если мы запустим приведенную ниже программу, в большинстве случаев результат будет равен 2, похоже, что find Any() всегда возвращает первый элемент? Но, нет никакой гарантии для этого, find Any() может возвращать любой элемент из потока.

package com.mkyong.java8;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

public class Java8FindAnyExample1 {

    public static void main(String[] args) {

        List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        Optional any = list.stream().filter(x -> x > 1).findAny();
        if (any.isPresent()) {
            Integer result = any.get();
            System.out.println(result);
        }

    }

}

Выход

2 // no guaranteed

Рекомендации

Оригинал: “https://mkyong.com/java8/java-8-stream-findfirst-and-findany/”