如何获取 Java 8 流中所有元素的字符串表示

Ale*_*lls 2 java java-stream

使用 Eclipse 和 Java -version 1.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());.
    }
Run Code Online (Sandbox Code Playgroud)

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

System.out.println("Sunk ships => " + this.opponent.sunkShips());
Run Code Online (Sandbox Code Playgroud)

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

Era*_*ran 5

您可以遍历 Stream 的元素并打印它们:

System.out.println("Sunk ships => ");
this.opponent.sunkShips().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

或者您可以从流生成一个列表并打印它:

System.out.println("Sunk ships => " + this.opponent.sunkShips().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • 当您已经知道您只对“字符串”表示感兴趣时,收集到“列表”中是没有意义的。你可以使用,例如`.map(Object::toString).collect(Collectors.joining(", "))`... (5认同)