为了账号安全,请及时绑定邮箱和手机立即绑定

在流 Java 中拆分字符串

在流 Java 中拆分字符串

尚方宝剑之说 2021-06-27 08:47:04
我有一个 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有人可以帮我吗。提前致谢。
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

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


其次,reduce 操作的效率不会很高,因为它会创建大量的中介Strings 和StringBuilders。相反,您应该使用String更高效的加入收集器:


 String temp = list.stream()

              .map(x -> x.name.replace(" ", "-"))

              .collect(Collectors.joining("&&"));


查看完整回答
反对 回复 2021-07-07
?
当年话下

TA贡献1890条经验 获得超9个赞

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

.collect(Collectors.joining("&&"))


查看完整回答
反对 回复 2021-07-07
  • 3 回答
  • 0 关注
  • 163 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信