본문 바로가기
IT/JAVA

Java의 배열(Array)과 리스트(List) 차이점

by ohukohoh 2025. 2. 27.
728x90
반응형

Java에서 데이터를 저장할 때 **배열(Array)**과 **리스트(List)**는 가장 많이 사용되는 자료구조입니다. 두 자료구조는 모두 데이터를 저장하는 역할을 하지만, 동작 방식과 사용법에서 차이가 있습니다. 이번 글에서는 배열과 리스트의 차이점을 비교하고, 각각의 장점과 단점을 살펴보겠습니다.


1. 배열(Array)란?

배열의 개념

  • 같은 자료형의 데이터를 연속된 메모리 공간에 저장하는 자료구조
  • 크기가 고정되어 있어 한 번 크기를 지정하면 변경할 수 없음
  • 인덱스(0부터 시작)를 사용하여 데이터에 빠르게 접근 가능

배열 선언 및 사용 예제

public class ArrayExample {
    public static void main(String[] args) {
        int[] numbers = new int[5]; // 크기가 5인 배열 선언
        numbers[0] = 10;
        numbers[1] = 20;
        numbers[2] = 30;
        numbers[3] = 40;
        numbers[4] = 50;

        for (int i = 0; i < numbers.length; i++) {
            System.out.println("numbers[" + i + "] = " + numbers[i]);
        }
    }
}

출력 결과:

numbers[0] = 10
numbers[1] = 20
numbers[2] = 30
numbers[3] = 40
numbers[4] = 50

🔹 배열의 크기는 선언할 때 정해져 변경할 수 없습니다. 🔹 인덱스를 사용하여 빠르게 데이터에 접근할 수 있습니다.


2. 리스트(List)란?

리스트의 개념

  • 크기가 고정된 배열과 달리, 동적으로 크기가 변하는 가변적인 자료구조
  • **컬렉션 프레임워크(Collection Framework)**에서 제공하는 클래스 중 하나
  • ArrayList, LinkedList 등의 다양한 구현체가 존재하며, ArrayList가 가장 많이 사용됨

리스트 선언 및 사용 예제 (ArrayList)

import java.util.ArrayList;

public class ListExample {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>(); // 동적 리스트 생성
        numbers.add(10);
        numbers.add(20);
        numbers.add(30);
        numbers.add(40);
        numbers.add(50);

        for (int i = 0; i < numbers.size(); i++) {
            System.out.println("numbers[" + i + "] = " + numbers.get(i));
        }
    }
}

출력 결과:

numbers[0] = 10
numbers[1] = 20
numbers[2] = 30
numbers[3] = 40
numbers[4] = 50

🔹 리스트는 크기가 동적으로 변경 가능하며, add()를 통해 손쉽게 요소를 추가할 수 있습니다. 🔹 배열과 달리 get(index) 메서드를 사용하여 값을 가져옵니다.


3. 배열 vs 리스트(List) 비교

비교 항목배열 (Array)리스트 (List - ArrayList)

크기 조정 고정 (변경 불가) 동적 (자동 조정)
메모리 할당 선언 시 할당 필요에 따라 동적 할당
데이터 접근 속도 빠름 (O(1)) 배열 기반이므로 빠름 (O(1))
삽입/삭제 속도 느림 (O(n), 크기 변경 시 새로운 배열 생성 필요) 빠름 (O(1) ~ O(n), 요소 밀어내기 가능)
사용 가능 데이터 타입 기본 자료형(int[], double[]) 및 객체 ArrayList<Integer>, ArrayList<String> 등 객체만 가능
메서드 지원 없음 (직접 구현 필요) .add(), .remove(), .get() 등 다양한 메서드 제공

🔹 배열은 고정된 크기의 데이터를 빠르게 처리할 때 유리합니다. 🔹 리스트는 크기가 유동적인 데이터를 다룰 때 편리하며, 다양한 메서드를 제공하여 활용성이 높습니다.


4. 배열과 리스트(List) 언제 사용할까?

배열(Array) 사용 추천 경우

  • 크기가 변하지 않는 데이터를 저장할 때
  • 메모리 효율이 중요할 때
  • 빠른 데이터 접근이 필요한 경우 (O(1) 접근 가능)

리스트(List) 사용 추천 경우

  • 데이터의 크기가 유동적일 때
  • 요소 추가 및 삭제가 자주 발생할 때
  • 다양한 내장 메서드를 활용하여 편리하게 데이터를 다루고 싶을 때

결론

  • **배열(Array)**은 고정 크기의 연속된 메모리 공간을 사용하며, 빠른 데이터 접근이 가능하지만 크기 변경이 불가능합니다.
  • **리스트(List)**는 동적으로 크기를 조절할 수 있는 자료구조로, 다양한 메서드를 제공하며 보다 유연하게 데이터를 다룰 수 있습니다.
  • 사용 목적에 따라 적절한 자료구조를 선택하여 효율적인 Java 프로그램을 작성할 수 있습니다. 🚀
728x90
반응형