加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java流中拆分字符串

发布时间:2020-12-15 08:26:57 所属栏目:Java 来源:网络整理
导读:我有一个POJO类产品 ListProduct 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 Ace
我有一个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

有人可以帮我吗.
提前致谢.

解决方法

首先,不需要split()操作.虽然您可以拆分所有部分然后将它们连接在一起,但使用replace或replaceAll调用则更简单.

其次,reduce操作效率不高,因为它创建了大量的中间字符串和StringBuilder.相反,您应该使用String连接收集器,这更有效:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读