[Java] Array ↔ ArrayList 변환

SuJeong.K·2024년 10월 3일
0

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()
    : IntStreamint[] 로 변환함

0개의 댓글