當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Stream findAny()用法及代碼示例


Stream findAny()返回描述 Stream 中某些元素的Optional(一個容器對象,可能包含也可能不包含非null值),或者返回空的Optional(如果 Stream 為空)。

findAny() VS findFirst()

findAny()方法從Stream返回任何元素,但是在某些情況下,我們需要獲取已過濾 Stream 的第一個元素。當正在處理的 Stream 具有定義的遇到順序(處理 Stream 元素的順序)時,則findFirst()很有用,它返回 Stream 中的第一個元素。


用法:

Optional<T> findAny()

Where, Optional is a container object which
may or may not contain a non-null value 
and T is the type of objects and the function
returns an Optional describing some element of
this stream, or an empty Optional if the stream is empty.

異常:如果所選元素為null,則拋出NullPointerException。

注意:findAny()是 Stream 接口的terminal-short-circuiting操作。此方法返回滿足中間操作的任何第一個元素。這是一種短路操作,因為它隻需要返回“任何”第一個元素並終止其餘的迭代即可。

範例1:整數 Stream 上的findAny()方法。

// Java code for Stream findAny() 
// which returns an Optional describing 
// some element of the stream, or an 
// empty Optional if the stream is empty. 
import java.util.*; 
  
class GFG { 
  
    // Driver code 
    public static void main(String[] args) 
    { 
  
        // Creating a List of Integers 
        List<Integer> list = Arrays.asList(2, 4, 6, 8, 10); 
  
        // Using Stream findAny() to return 
        // an Optional describing some element 
        // of the stream 
        Optional<Integer> answer = list.stream().findAny(); 
  
        // if the stream is empty, an empty 
        // Optional is returned. 
        if (answer.isPresent()) { 
            System.out.println(answer.get()); 
        } 
        else { 
            System.out.println("no value"); 
        } 
    } 
}

輸出:

2

範例2:字符串 Stream 上的findAny()函數。

// Java code for Stream findAny() 
// which returns an Optional describing 
// some element of the stream, or an 
// empty Optional if the stream is empty. 
import java.util.*; 
  
class GFG { 
  
    // Driver code 
    public static void main(String[] args) 
    { 
  
        // Creating a List of Strings 
        List<String> list = Arrays.asList("Geeks", "for", 
                                          "GeeksQuiz", "GFG"); 
  
        // Using Stream findAny() to return 
        // an Optional describing some element 
        // of the stream 
        Optional<String> answer = list.stream().findAny(); 
  
        // if the stream is empty, an empty 
        // Optional is returned. 
        if (answer.isPresent()) { 
            System.out.println(answer.get()); 
        } 
        else { 
            System.out.println("no value"); 
        } 
    } 
}

輸出:

Geeks

注意: Stream findAny()操作的行為是明確不確定的,即,可以自由選擇 Stream 中的任何元素。對同一源的多次調用可能不會返回相同的結果。示例3:findAny()方法以一種不確定的方式返回被4整除的元素。

// Java code for Stream findAny()  
// which returns an Optional describing 
// some element of the stream, or an  
// empty Optional if the stream is empty. 
import java.util.OptionalInt; 
import java.util.stream.IntStream; 
  
class GFG { 
      
    // Driver code 
    public static void main(String[] args) { 
          
    // Creating an IntStream 
    IntStream stream = IntStream.of(4, 5, 8, 10, 12, 16) 
                       .parallel(); 
      
    // Using Stream findAny().  
    // Executing the source code multiple times 
    // may not return the same result. 
    // Every time you may get a different  
    // Integer which is divisible by 4. 
    stream = stream.filter(i -> i % 4 == 0); 
  
    OptionalInt answer = stream.findAny(); 
    if (answer.isPresent())  
    { 
        System.out.println(answer.getAsInt()); 
    } 
} 
}

輸出:

16


相關用法


注:本文由純淨天空篩選整理自Sahil_Bansall大神的英文原創作品 Java Stream findAny() with examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。