簡體   English   中英

Collectors.toList()返回的收集器類型

[英]Type of Collector returned by Collectors.toList()

我對Collectors.toList()和Collectors.toSet()靜態方法感到困惑。 這兩種方法不帶任何參數。 那么,他們如何知道要返回哪種類型的收集器?

例如,如果我們有這行:

Collectors.toList();

返回的收集器是Collector<Object,?,List<Object>>

如果我們有這行:

Collector<Integer,?,List<Integer>> c = Collectors.toList();

然后Collectors.toList()將返回Collector<Integer,?,List<Integer>> 在不接受任何輸入參數的情況下,toList()方法如何知道它需要返回Collector<Integer,?,List<Integer>>

可能如何編寫toList()的示例代碼可能對我的理解有所幫助。

提前致謝。

此功能在通用類型推斷中作為目標類型引入。

Java編譯器利用目標類型來推斷通用方法調用的類型參數 表達式的目標類型是Java編譯器期望的數據類型,具體取決於表達式出現的位置。

例如:

//         v--- the generic parameter `T` is inferred by the target type 
Collector<Integer,?,List<Integer>> c = Collectors.toList();

//         v--- the unbounded type parameter is extends `Object`
Collectors.toList();

假設您要將一個偶數列表收集到另一個列表中。

您可以這樣寫:

// assume that integerList contains ints between 1 and 20
List<Integer> evenInts = integerList.stream().filter(x -> x % 2 == 0)
                                             .collect(Collectors.toList());

collect是流中的終端操作 ,並且期望返回受R約束的類型,在這種情況下,該類型將轉換為List<Integer> 這樣便可以適當地收集您的元素。

我們鼓勵您仔細閱讀有關Collector更多信息 ,因為它是較新的Java 8 Stream API的一部分,一旦開始,可能有點好奇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM