Java Array 와 ArrayList 의 차이

Seong Hyeon Kim·2024년 7월 20일
0

자바

목록 보기
1/3
post-thumbnail

ArrayList와 배열은 자바에서 데이터를 저장하는 두 가지 다른 자료구조입니다. 각각의 특성과 사용 목적이 다르기 때문에, 상황에 따라 적절한 자료구조를 선택해야 합니다.

배열 (Array)

  • 고정 크기: 배열은 선언 시 크기가 고정됩니다. 크기를 변경할 수 없습니다.
  • 빠른 접근: 인덱스를 사용하여 배열 요소에 빠르게 접근할 수 있습니다.
  • 메모리 연속성: 배열 요소는 메모리에서 연속적으로 저장됩니다.
  • 타입 제한: 배열은 동일한 타입의 요소만 저장할 수 있습니다.

ArrayList

  • 가변 크기: ArrayList는 동적으로 크기가 조절됩니다. 요소를 추가하거나 제거할 수 있습니다.
  • 객체만 저장 가능: ArrayList는 객체만 저장할 수 있습니다. 기본형(int, char 등)을 저장하려면 해당 기본형의 래퍼 클래스(Integer, Character 등)을 사용해야 합니다.
  • 간편한 사용: 다양한 메소드를 통해 요소를 추가, 삭제, 검색할 수 있습니다.
  • 성능: 내부적으로 배열을 사용하여 요소를 저장하지만, 크기가 자동으로 조절되므로 요소를 추가하거나 제거할 때 배열을 재할당하는 비용이 발생할 수 있습니다.

변환 필요성

배열과 ArrayList는 각기 다른 목적과 사용 방법을 가지고 있으므로, 상황에 따라 변환이 필요할 수 있습니다. 예를 들어, 데이터가 동적으로 변하는 경우 ArrayList를 사용하는 것이 편리합니다. 그러나, 특정 메소드나 라이브러리가 배열을 요구할 때가 있습니다. 이럴 때 ArrayList를 배열로 변환하는 작업이 필요할 수 있습니다.

다음은 ArrayList와 배열 간의 변환 방법입니다.

ArrayList를 배열로 변환

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayListToArray {
    public static void main(String[] args) {
        // ArrayList 생성 및 값 추가
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);

        // ArrayList를 배열로 변환
        Integer[] array = new Integer[arrayList.size()];
        arrayList.toArray(array);

        // 결과 출력
        System.out.println(Arrays.toString(array)); // [1, 2, 3]
    }
}

배열을 ArrayList로 변환

import java.util.ArrayList;
import java.util.Arrays;

public class ArrayToArrayList {
    public static void main(String[] args) {
        // 배열 생성
        Integer[] array = {1, 2, 3};

        // 배열을 ArrayList로 변환
        ArrayList<Integer> arrayList = new ArrayList<>(Arrays.asList(array));

        // 결과 출력
        System.out.println(arrayList); // [1, 2, 3]
    }
}

요약

  • 배열은 고정 크기이므로 크기를 변경할 수 없고, ArrayList는 가변 크기이므로 동적으로 크기를 변경할 수 있습니다.
  • 변환이 필요한 이유는 각각의 자료구조가 상황에 따라 더 적합한 경우가 있기 때문입니다.
  • ArrayList와 배열은 서로 변환할 수 있으며, 각 자료구조의 장점을 활용하여 프로그램을 작성할 수 있습니다.
profile
삽질도 100번 하면 요령이 생긴다. 부족한 건 경험으로 채우는 개발자

0개의 댓글