2016-06-10 60 views
-3

我想在過濾器之後將輸入列表轉換爲不同的列表。請讓知道如何在java8流中實現。java8流收集不同的列表

我嘗試了類似下面的方法,它在collect()的getOutput()中給出了編譯錯誤「p無法解析爲變量」。

List<Output> outputList= inputList.stream() 
        .filter(p -> p.param1==10)      
        .collect(Collectors.toList(getOutput(p))); 


private Output getOutput(Input inp){ 
Output out = new Output(); 
out.value1= inp.value1; 
--- 
--- 
} 
+1

查看'map'。 – Tunaki

+0

你能解釋一下你的意思嗎? – skumar

+1

請參閱本教程https://docs.oracle.com/javase/tutorial/collections/streams/。它解釋它。 – Tunaki

回答

3

正如意見建議你可以做這樣的事情

List<Output> outputList= inputList.stream() 
        .filter(p -> p.param1==10) 
        .map(j -> getOutput(j)) 
        .collect(Collectors.toList()); 

所以過濾器後,將轉換爲對象的其他類型的最後收集。或者,您可以使用映射收集器將對象轉換爲另一種類型,然後像下面那樣收集它們。

List<Output> outputList= inputList.stream() 
     .filter(p -> p.param1==10) 
     .collect(Collectors.mapping(j -> getOutput(j), Collectors.toList()));