2017-06-07 67 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());