2017-06-07 76 views
0

我想知道是否有可能將以下代碼轉換爲Java 8 Stream?如何將以下代碼轉換爲Java 8 Stream?

List<Borg> newBorgMembers = new ArrayList<>(); 

// mankind is a List<Individual> 
mankind.forEach(id -> newBorgMembers.add(new Borg(id))); 

所需結構:

List<Borg> newBorgMembers = mankind.stream().filter().map().collect() 

來自這個問題的教程,所述提示是使用filtermap。對我來說,困難是如何添加元素而不需要發起一個空的持有者List<Borg>

+0

我沒有看到你的初始代碼需要過濾。 – tsolakp

+0

您可以將流中的元素從流中收集到列表中。 –

+1

您可以將流中的元素從流中收集到列表中。 (Collector.toList()); List newBorgMembers = mankind.stream()。filter(e - >)。map(e-><你的元素修改>)。 –

回答

0

這是您的流的一小段代碼。

import java.util.ArrayList; 
import java.util.List; 
import java.util.stream.Collectors; 

public class StreamTest { 

    public static void main(String[] args) { 
     // Initialize mankind 
     List<Individual> mankind = new ArrayList<>(); 
     mankind.add(new Individual("A")); 
     mankind.add(new Individual("B")); 
     mankind.add(new Individual("C")); 


     // The stream 
     List<Borg> newBorgMembers = mankind.stream().map(individual -> new Borg(individual.id)).collect(Collectors.toList()); 

     newBorgMembers.forEach(borg -> System.out.println(borg.id)); 
    } 
} 

class Individual { 
    String id; 
    public Individual(String id) { 
     this.id = id; 
    } 


} 
class Borg { 
    String id; 

    public Borg(String id) { 
     this.id = id; 
    } 

} 
1

還是有點更好:

mankind.stream() 
     .map(Individual::getId) 
     .map(Borg::new) 
     .collect(Collectors.toList()); 
相關問題