-
[Java] 배열과 List 사이의 변환개발 지식/Java 2023. 11. 15. 12:10
배열 -> List
- 아래의 1번과 2번 방식에서 Arrays.asList를 List.of로 변경하여도 동작하지만 조금의 차이가 발생한다.
- 둘의 차이점은 아래의 글에 정리해두었다.
https://prospective-developer-seo.tistory.com/111
[Java] Arrays.asList()와 List.of()의 차이
공통점 - 매개변수로 가변인자를 받아서(여러 요소나 배열도 가능) list를 반환한다. - 리스트의 크기를 변경할 수 없다. 차이점 변경 가능 여부 - Arrays.asList()로 반환된 list는 변경이 가능하지만 Li
prospective-developer-seo.tistory.com
1. Arrays.asList(array)
- 이 경우 고정길이의 List가 반환되고 원본 배열의 변경이 List에 영향을 미치게 된다.
2. new ArrayList<>(Arrays.asList(array))
- 원본 배열에 영향이 가지 않으며 List의 길이 변환이 가능하다.
3. Stream.of(array).collect(Collectors.toList())
- Java 8 버전 이후부터는, Stream을 이용하여 배열을 List로 변화할 수 있고, 이 역시 원본 배열과 독립적이며 길이 변환도 가능하다.
예외 - 배열의 원소가 primitive type인 경우
- 이 경우에 Arrays.asList 또는 List.of를 사용하면 가변인자가 배열 자체를 하나의 인자로 보고 의도하지 않은 결과가 나오게 된다.
int[] arr = {1, 2, 3}; List<int[]> intList = Arrays.asList(arr);
- 그 이유는 Arrays.asList와 List.of 메서드가 primitive 타입을 Wrapper 클래스로 형변환해주지 않기 때문이다.
해결방안
1. 반복문 사용하기
2. Stream 사용하기
int[] arr = {1, 2, 3}; List<Integer> intList = Arrays.stream(arr).boxed().collect(Collectors.toList());
List -> 배열
1. toArray()
List<Integer> list = new ArrayList<>(List.of(1, 2, 3, 4)); Integer[] arr = list.toArray(new Integer[list.size()]);
- toArray의 인자로 아무것도 넣지 않으면 Object타입의 배열이 생성된다.
- 또한 인자로 넘겨준 배열의 크기가 원본 리스트보다 작은 경우 자동으로 원본 리스트의 크기로 배열을 생성해준다.
참고 자료
https://hianna.tistory.com/551
[Java] 배열을 List로, List를 배열로 변환하기
배열을 List로 Arrays.asList() new ArrayList(Arrays.asList()) Collectors.toList() ArrayList를 배열로 toArray() - java.util.List 배열을 List로 1. Arrays.asList() 코드 import java.util.Arrays; import java.util.List; public class ArrayConversion
hianna.tistory.com
https://hianna.tistory.com/552
[Java] int 배열을 List로 변환하기
지난번에는 배열을 List로 변환하는 방법을 알아보았습니다. [Java] 배열을 List로, List를 배열로 변환하기 [Java] 배열을 List로, List를 배열로 변환하기 배열을 List로 Arrays.asList() new ArrayList(Arrays.asList(
hianna.tistory.com
'개발 지식 > Java' 카테고리의 다른 글
[Java] 추상 클래스의 생성자 (0) 2023.12.03 [Java] 가변인자 (varargs) (0) 2023.11.15 [Java] Arrays.asList()와 List.of()의 차이 (1) 2023.11.15 [Java] 정규표현식(Regular Expression, regex) (0) 2023.07.27 [Java] 인텔리제이 단축키 모음 (0) 2023.07.02