首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8用户按线拆分

Java 8用户按线拆分
EN

Stack Overflow用户
提问于 2017-06-25 09:00:55
回答 3查看 780关注 0票数 4

有人能告诉我应该如何使用消费者来达到相同的输出,因为这是行不通的吗?

代码语言:javascript
复制
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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-25 09:05:23

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

Consumer<String>一次消耗一个String

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

您可以通过拆分输入Stream<String>创建String,并通过调用forEach()Stream的所有元素传递给Consumer<String>

代码语言:javascript
复制
Consumer<String> cons = System.out::println;
Arrays.stream(names.split(" ")).forEach(cons);

当然,没有必要将这个片段分成两行:

代码语言:javascript
复制
Arrays.stream(names.split(" ")).forEach(System.out::println);
票数 4
EN

Stack Overflow用户

发布于 2017-06-25 09:20:06

你的Consumer接受String,但你接受String[]

可以使用Pattern#splitAsStream拆分字符串,让Consumer接受String,例如:

代码语言:javascript
复制
Pattern.compile(" ").splitAsStream(names).forEach(System.out::println);

您可以使用String#replaceAllString#join,例如:

代码语言:javascript
复制
Consumer<String> cons =System.out::println;

cons.accept(names.replaceAll(" ","\n"));

//OR
cons.accept(String.join("\n", names.split(" ")));
票数 4
EN

Stack Overflow用户

发布于 2017-06-25 09:27:44

将Array转换为流,然后使用使用者。

代码语言:javascript
复制
public static void main(String args[]){

    String names = "John Alex Peter";
    String[] namesSplitted = names.split(" ");

    for (String s : namesSplitted) {
        System.out.println(s);
    }

   Consumer<String> printConsumer =  System.out::println;
   Arrays.stream(names.split(" ")).forEach( printConsumer);

    // OR Simply
    Arrays.stream(names.split(" ")).forEach( System.out::println);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44744806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档