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
반응형
'IT > JAVA' 카테고리의 다른 글
| HashMap vs HashSet 차이점 (1) | 2025.03.01 |
|---|---|
| Java Collection Framework 개요 (List, Set, Map) (1) | 2025.02.28 |
| Java에서 예외 처리하는 방법 (try-catch, throw, finally) (0) | 2025.02.26 |
| Java의 static과 final 키워드 활용법 (1) | 2025.02.25 |
| Java에서 인터페이스와 추상 클래스 비교(Interface, Abstract Class) (1) | 2025.02.24 |