首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在流Java中拆分字符串

在流Java中拆分字符串
EN

Stack Overflow用户
提问于 2018-08-09 02:25:53
回答 5查看 1K关注 0票数 3

我有一个POJO类产品

List<Product> list = new ArrayList<>();
list.add(new Product(1, "HP Laptop Speakers", 25000));
list.add(new Product(30, "Acer Keyboard", 300));
list.add(new Product(2, "Dell Mouse", 150));

现在我想拆分列表以获得HP-Laptop-Speakers&&Acer-Keyboard&&Dell-Mouse.格式的输出

我只想要一个单独的班轮。到目前为止,我已经设法

Optional<String> temp = list.stream().
                   map(x -> x.name).
                   map(x -> x.split(" ")[0]).
                   reduce((str1, str2) -> str1 + "&&" + str2);
System.out.println(temp.get());

输出:HP&&Acer&&Dell

谁能帮帮我。提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-08-09 02:42:00

首先,split()操作不是必需的。虽然您可以拆分所有部分,然后像这样将它们连接在一起,但使用replacereplaceAll调用要简单得多。

其次,reduce操作效率不高,因为它创建了大量的中间StringStringBuilder。相反,您应该使用String加入收集器,它的效率更高:

 String temp = list.stream()
              .map(x -> x.name.replace(" ", "-"))
              .collect(Collectors.joining("&&"));
票数 3
EN

Stack Overflow用户

发布于 2018-08-09 02:29:14

尝试在字符串流上使用收集器:

.collect(Collectors.joining("&&"))
票数 1
EN

Stack Overflow用户

发布于 2018-08-09 02:29:20

一种简单的方法是覆盖Product类中的toString()方法,按照您想要的格式打印名称,然后遍历列表,将每个结果连接到一个更长的字符串上。

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

https://stackoverflow.com/questions/51753372

复制
相关文章

相似问题

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