如何获得所有元素的String表示在Java 8个流

问题描述:

使用Eclipse和Java的版本1.8如何获得所有元素的String表示在Java 8个流

我有这样的代码:

public Stream<Ship> remainingShips() { 
     return this.b.getShips().stream().filter(s -> !s.isSunk());. 
    } 

    public Stream<Ship> sunkShips() { 
     return this.b.getShips().stream().filter(s -> s.isSunk());. 
    } 

我想打印出的所有项目流,通过调用

System.out.println("Sunk ships => " + this.opponent.sunkShips()); 

但这只会打印流对象,我怎么能访问流中的所有项目并打印出每个?

+3

可能有助于HTTP://计算器.com/questions/14830313 /检索java-util-stream-stream-in-java-8 – NemanjaT

+2

你能为这个问题想出更好的标题吗?例如,“如何打印流中的所有元素?”。谢谢 – OlegTheCat

+0

是的,可以做, –

可以遍历了数据流的要素,并打印出来:

System.out.println("Sunk ships => "); 
this.opponent.sunkShips().forEach(System.out::println); 

或者你也可以从流生成列表和打印:

System.out.println("Sunk ships => " + this.opponent.sunkShips().collect(Collectors.toList()); 
+0

谢谢!如果我想仅在流的项目数超过0的情况下打印流,该怎么办?在Java中使用流/过滤器有没有好的方法? –

+1

@AlexMills为了找到一个Stream是否为空,你必须使用一些终端操作(比如'findAny()'或'findFirst()'来关闭Stream,所以我建议你生成一个List('列表船= this.opponent.sunkShips()。collect(Collectors.toList();')并打印它,如果它不是空的 – Eran

+0

很酷,将不得不看到如何实现列表(),谢谢! –