일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- input
- Java
- js
- 자바
- Files
- windows
- Button
- 자바스크립트
- 테이블
- Visual Studio Code
- Maven
- 인텔리제이
- javascript
- CMD
- html
- CSS
- date
- string
- Array
- ArrayList
- 이탈리아
- json
- list
- 배열
- table
- Eclipse
- vscode
- 문자열
- IntelliJ
- 이클립스
- Today
- Total
어제 오늘 내일
[Java] List 2개 합치기 본문
Java에서 2개의 List를 합쳐서 하나로 만드는 방법입니다.
- List.addAll()
- Collections.addAll()
- Stream.of() + flatMap() + collect()
1. List.addAll()
boolean addAll(Collection<? extends E> c)
java.util.List 인터페이스의 addAll() 메소드는 Collection 객체를 파라미터로 입력받아서,
List의 뒤에 이어붙여 줍니다.
코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MergeList {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>(Arrays.asList("A", "B"));
List<String> list2 = new ArrayList<>(Arrays.asList("C", "D"));
List<String> mergedList = new ArrayList<>();
// list 합치기
mergedList.addAll(list1);
mergedList.addAll(list2);
// 결과 출력
System.out.println(mergedList); // [A, B, C, D]
}
}
결과
[A, B, C, D]
allAll() 메소드를 이용하여,
list 객체를 mergedList에 차례로 이어붙였습니다.
2. Collections.addAll()
public static <T> boolean addAll(Collection<? super T> c, T... elements)
Collections 클래스의 static 메소드인 addAll() 메소드는
Collection 객체와 n개의 element를 파라미터로 입력받습니다.
(n개의 element는 배열로 전달될 수도 있습니다.)
이 메소드는,
첫번째 파라미터로 입력받은 Collection 객체에,
나머지 n개의 element를 추가해줍니다.
List.addAll() 메소드를 사용하는 것보다,
이 메소드를 사용하는 것의 성능이 더 좋다고 합니다.
코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MergeList {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>(Arrays.asList("A", "B"));
List<String> list2 = new ArrayList<>(Arrays.asList("C", "D"));
List<String> mergedList = new ArrayList<>();
// list 합치기
Collections.addAll(mergedList, list1.toArray(new String[0]));
Collections.addAll(mergedList, list2.toArray(new String[0]));
// 결과 출력
System.out.println(mergedList); // [A, B, C, D]
}
}
결과
[A, B, C, D]
Collections.addAll(mergedList, list1.toArray(new String[0]));
첫번째 파라미터로 mergedList를 전달하였고,
이 mergedList에 나머지 파라미터로 전달된 값들이 추가됩니다.
두번째 파라미터는 list1을 배열로 변경한 배열이 전달되어,
list1의 element들이 mergedList에 추가됩니다.
( List를 배열로 변경하는 방법은 아래의 포스팅을 참조하세요. )
[Java] 배열을 List로, List를 배열로 변환하기
3. Stream.of() + flatMap() + collect()
Java 8 이후부터는 Stream을 이용할 수 있습니다.
코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MergeList {
public static void main(String[] args) {
List<String> list1 = new ArrayList<>(Arrays.asList("A", "B"));
List<String> list2 = new ArrayList<>(Arrays.asList("C", "D"));
// list 합치기
List<String> mergedList = Stream.of(list1, list2)
.flatMap(x -> x.stream())
.collect(Collectors.toList());
// 결과 출력
System.out.println(mergedList); // [A, B, C, D]
}
}
결과
[A, B, C, D]
Stream.of()
list1, list2의 stream을 얻어옵니다.
flatMap(x->x.stream())
list의 element들을 하나씩 꺼내서
list의 element들로 이루어진 stream을 리턴합니다.
collect(Collectors.toList())
Stream을 List로 변환합니다.
여러기의 List를 하나로 합치는 방법을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] ArrayList의 맨 앞에 값 / ArrayList 추가하기 (0) | 2021.05.06 |
---|---|
[Java] List 중복제거 하면서 합치기 (0) | 2021.05.06 |
[Java] 배열 길이 늘리기 (0) | 2021.05.05 |
[Java] List에서 null 삭제하기 (0) | 2021.05.05 |
[Java] 대소문자 구분없이 문자열 비교하기 (0) | 2021.05.04 |