주로 코딩테스트 문제를 풀면서 쓸때마다 잊어먹고 찾아보게 되어서
간단하게 정리해보았다.
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)
'Java' 카테고리의 다른 글
| [Java] 문자열 자르기 split ( Limit 사용하여 마지막 빈 문자열 담기 ) (2) | 2023.09.12 |
|---|---|
| Java 에서 XML 두개의 파일 비교 하기 - XMLUnit (0) | 2023.04.06 |
| [Java] 제곱근(루트) 구하기 / Math.sqrt() (0) | 2022.10.18 |
| [Java] 사용자 Web/App/Mobile 접속 구분하기 (0) | 2022.10.14 |
| [Java] 대소문자 확인 및 대소문자 변환 (0) | 2022.10.14 |
댓글