Java 8 Consumer 按行拆分

Spo*_*ngi 5 java java-8

有人可以告诉我应该如何使用消费者来达到相同的输出,因为这不起作用?

String names = "John Alex Peter";
String[] namesSplitted = names.split(" ");
for (String s : namesSplitted) {
    System.out.println(s);
}

Consumer<String> cons = x -> System.out.println(x.split(" "));
cons.accept(names);
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

AConsumer接收输入并处理它(即“消耗”它)。

A一次Consumer<String>消耗一个。String

在您的代码示例中,ConsumerSystem.out.println.

您可以Stream<String>通过拆分输入创建一个,并通过调用将String其所有元素传递给:StreamConsumer<String>forEach()

Consumer<String> cons = System.out::println;
Arrays.stream(names.split(" ")).forEach(cons);
Run Code Online (Sandbox Code Playgroud)

当然,不需要将此代码片段分成两行:

Arrays.stream(names.split(" ")).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)