Array → ArrayList : 참조 타입
1. Arrays.asList( )
Integer[] array = {1, 2, 3};
List<Integer> list = Arrays.asList(array);
Arrays.asList()
: 배열을 리스트로 변환함
- 주어진 배열을 기반으로 변환된 리스트이기 때문에
예외적으로 고정된 크기를 가지며, 요소의 추가나 삭제가 불가능함
2. ArrayList 생성자
Integer[] array = {1, 2. 3};
// ...
List<Integer> list = new ArrayList<>(Arrays.asList(array));
ArrayList
의 생성자를 사용하여 배열을 리스트로 변환함
- 새로운
ArrayList
를 생성하여 요소를 복사했기 때문에
요소의 추가와 삭제가 가능함
3. 반복문
Integer[] array = {1, 2, 3};
// ...
List<Integer> list = new ArrayList<>();
for(Integer element : array){
list.add(element);
}
- 반복문을 통해 배열의 각 요소를
ArrayList
에 추가함
- 리스트로 변환하는 과정에서 조건에 따라 요소의 추가와 삭제가 가능함
Array → ArrayList : 기본 타입
1. Stream API
int[] array = {1, 2, 3};
// ...
List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());
- 직접 리스트로 변환할 수 없기 때문에 Stream API를 사용하여 변환해야함
stream()
: 스트림 객체를 생성함
boxed()
: 기본 타입의 스트림을 객체 타입으로 변환함
collect(Collectors.toList())
: 스트림 요소를 수집하여 리스트 형태로 변환함
ArrayList → Array : 참조 타입
1. toArray( )
List<Integer> list = new ArrayList<>();
// ...
Object[] array = list.toArray();
toArray()
: 매개변수가 없을 경우 기본적으로 Object 타입의 배열을 반환함
- 배열의 타입을 지정하지 않거나, 배열의 요소를 특정 타입으로 캐스팅해야할 때 적합함
- 타입 안정성을 보장하지 않고, 형변환 오류가 발생할 수 있음
2. toArray(T[ ] a)
List<Integer> list = new ArrayList<>();
// ...
Integer[] array = list.toArray(new Integer[0]);
toArray(T[] a)
: 제네릭 타입 배열로 리스트의 요소들을 복사하여 반환함
- 파라미터 a의 길이를 0으로 지정하면 리스트의 크기에 맞춰
새로운 배열이 생성되어 요소가 저장됨
- 타입 안정성을 보장하고, 불필요한 배열의 생성과 삭제를 방지함
3. Stream API
List<Integer> list = new ArrayList<>();
// ...
Integer[] array = list.stream().toArray(Integer[]::new);
stream()
: ArrayList
요소를 기반으로 Stream<Integer>
를 생성함
toArray(Integer[]::new)
: Integer[]
타입의 배열을 생성하고 스트림 요소를 배열에 담아 반환함
- Stream API는 코드의 가독성은 좋지만 오버헤드가 발생할 수 있음
ArrayList → Array : 기본 타입
1. toArray(T[ ] a)
List<Integer> list = new ArrayList<>();
// ...
int[] array = new int[list.size()];
for(int i=0; i<list.size(); i++){
array[i] = list.get(i);
}
- 리스트의 크기만큼 배열을 생성함
- 반복문을 사용하여 리스트의 요소들을 가져와 기본 타입 배열에 저장함
2. Stream API
List<Integer> list = new ArrayList<>();
// ...
int[] array = list.stream().mapToInt(Integer::intValue).toArray();
stream()
: ArrayList
요소를 기반으로 Stream<Integer>
를 생성함
mapToInt(Integer::intValue)
: Integer
객체의 요소에 대해 intValue()
를 호출하여 객체 타입인 Stream<Integer>
를 기본 타입인 IntStream
으로 변환함
toArray()
: IntStream
을 int[]
로 변환함