ःArshl:
私は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
代わりに呼び出します。
それは仲介者の多く作成されているので第二に、減らす操作は非常に効率的ではないであろうString
sおよびStringBuilder
秒。代わりに、あなたが使用する必要がありString
、より効率的である参加Collectorを、:
String temp = list.stream()
.map(x -> x.name.replace(" ", "-"))
.collect(Collectors.joining("&&"));