본문 바로가기
Java

[Java] List to Array(배열) 또는 Array(배열) to List

by Jo__y 2022. 10. 13.

주로 코딩테스트 문제를 풀면서 쓸때마다 잊어먹고 찾아보게 되어서
간단하게 정리해보았다.

1. List to Array

List.toArray()

List 의 toArray() 메서드를 활용하는 방법으로

List<String> list = new ArrayList<>();

String[] arr = list.toArray(new String[0]);

위와 같이 배열 선언과 동시에 할당 하거나

List<String> list = new ArrayList<>();

String[] arr = new String[list.size()];
list.toArray(arr);

배열 선언 후 List 값을 채워 넣는 방법이 있다.

Stream API

Java8 버전 이상부터 제공되는 Stream API 를 사용하는 방법

String[] arr = list.stream().toArray(String[]::new);

기본형 배열로 변환

List -> int 와 같은 참조형 -> 기본형 배열 변환 시에는 반복문을 통해 변환하거나
Stream API 의 mapToInt() 메서드를 사용하면 된다.
이또한 Java8 이상부터 제공된다.

int[] arr = list.stream().mapToInt(i->i).toArray();

2. Array to List

Arrays.asList()

String[] arr = {"a","b","c"};

List<String> list = Arrays.asList(arr);

java.util.Arrays 클래스의 asList() 메소드를 이용하여 변환 할 수 있다.

단, asList() 는 고정길이인 ArrayList 클래스를 반환하는데 이 클래스에는 값을 추가할 수 없으며, 내부구조는 배열 로
구성되어 있기 때문에 배열수정 -> List 값 변경 , List 값 변경 -> 원본배열 변경 등
원본배열과 List 의 값이 동기화 되는 문제점이 있다.

이를 해결하기 위해선 새로운 ArrayList 객체를 생성해서 사용할 수 있다.

String[] arr = {"a","b","c"};

List<String> list = new ArrayList<>(Arrays.asList(arr));

이렇게 하면 새로운 값을 추가할수도 있고, 원본 배열이 변경되어도 List 값이 변경되지 않는다.

Collections.addAll()

String[] arr = {"a","b","c"};

List<String> list = new ArrayList<>();
Collections.addAll(list , arr); // 비어있는 List 객체 , 배열 매개변수

Collectors.toList() (Stream API)

Java8 이상인 경우 사용할 수 있다.

String[] arr = {"a","b","c"};
List<String> list = Arrays.stream(arr).collect(Collectors.toList());

배열을 스트림으로 변환후 스트림 -> List 로 변환한다.

참조
[Java] List를 배열(Array)로 변환 하기 - Java버전별, 기본형 변환
[Java]배열을 리스트로 변환(Array to List)

댓글