2016-07-12 1 views
4

Listのアイテムを複製する必要があります。だから、Javaのストリーム内のアイテムを複製する

、リストがある場合:

["firstItem", "secondItem"] 

私はあるリストを返したい:

["firstItem","firstItem","secondItem","secondItem"] 

私はflatMap機能を介してこれをやろうとしているが、私はありませんよそれをやり遂げる方法を確かめてください。

List<T> duplicatedList = originalList.stream() 
      .flatMap(u -> Stream.of()) // how to duplicate items?? 
      .collect(Collectors.toList()); 

答えて

5

二つの同じ項目のストリームを作成します。

List<String> originalList = Arrays.asList("firstItem","secondItem"); 
List<String> duplicatedList = originalList.stream() 
     .flatMap(u -> Stream.of(u,u)) 
     .collect(Collectors.toList()); 
System.out.println(duplicatedList); 

出力:

[firstItem, firstItem, secondItem, secondItem] 
+0

この場合、streamとcollectを使用する利点は何ですか?私は、addとaddを使う利点を生かすために、質問を思いついたと思います。 –

1

が、私は、これは簡単で、より読みやすいと思う:

originalList.addAll(originalList); 

出力:

[firstItem, secondItem, firstItem, secondItem] 
+2

実際にはあなたのコードは '[firstItem、secondItem、firstItem、secondItem]'を生成します。そのため、注文が重要であれば、望ましい出力は得られません。 – Eran

+0

ありがとう、私は注文に気付かなかった。今すぐ出力を修正しました。 –

関連する問題