ストリームJavaで文字列を分割

ः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代わりに呼び出します。

それは仲介者の多く作成されているので第二に、減らす操作は非常に効率的ではないであろうStringsおよびStringBuilder秒。代わりに、あなたが使用する必要がありString、より効率的である参加Collectorを、:

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=201034&siteId=1