在流 Java 中拆分字符串

我有一个 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


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


尚方宝剑之说
浏览 164回答 3
3回答

largeQ

首先,split()不需要手术。虽然您可以拆分所有部分,然后像这样将它们连接在一起,但使用replaceorreplaceAll调用要简单得多。其次,reduce 操作的效率不会很高,因为它会创建大量的中介Strings 和StringBuilders。相反,您应该使用String更高效的加入收集器:&nbsp;String temp = list.stream()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .map(x -> x.name.replace(" ", "-"))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.joining("&&"));

当年话下

尝试在字符串流上使用收集器:.collect(Collectors.joining("&&"))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java