2016-07-12 2 views
4

List에 항목을 복제해야합니다.자바 스트림의 항목 복제

["firstItem", "secondItem"] 

나는이 목록을 반환 할 :

그래서 목록입니다 경우 나는 flatMap 기능을 통해이 작업을 수행하기 위해 노력하고있어

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

을하지만 난 아니에요 그것을하는 방법에 대해 확실히 이동하십시오.

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

고마워, 나는 명령을 알지 못했다. 이제 출력을 수정했습니다. –