2016-09-19 54 views
0

使用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

是的,可以做, –

回答

4

可以遍歷了數據流的要素,並打印出來:

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

很酷,將不得不看到如何實現列表(),謝謝! –

相關問題