반응형
Java에서 List는 순서를 유지하며 데이터를 저장할 수 있는 인터페이스로, 컬렉션 프레임워크의 중요한 구성 요소입니다. 특히 ArrayList는 List를 구현한 대표적인 클래스입니다. 이번 글에서는 List와 ArrayList의 기본 개념, 주요 기능, 그리고 사용법을 초보자도 쉽게 이해할 수 있도록 설명하겠습니다. 😊
1. List 인터페이스란?
List는 Java의 컬렉션 프레임워크에서 순서를 유지하며 데이터를 저장할 수 있는 인터페이스입니다.
List의 특징
- 순서 유지: 데이터가 삽입된 순서를 유지합니다.
- 중복 허용: 동일한 데이터(객체)를 여러 번 저장할 수 있습니다.
- 다양한 구현체 제공: ArrayList, LinkedList 등이 List 인터페이스를 구현한 대표적인 클래스입니다.
2. ArrayList: List 인터페이스의 구현 클래스
ArrayList는 List를 구현한 가장 대표적인 클래스입니다.
ArrayList 특징
- 배열 기반: 내부적으로 동적 배열을 사용하여 데이터를 저장.
- 빠른 검색: 인덱스를 기반으로 데이터를 검색할 때 속도가 빠릅니다.
- 유연한 크기 조정: 배열 크기를 자동으로 조정합니다.
3. 코드로 배우는 ArrayList 사용법
3-1. ArrayList 기본 사용법
import java.util.ArrayList;
import java.util.List;
public class ListEx {
public static void main(String[] args) {
// List 선언 및 ArrayList 구현체 생성
List<String> lst = new ArrayList<>();
// 1. 데이터 추가
lst.add("Java");
lst.add("C");
lst.add("C++");
lst.add("Python");
System.out.println("List: " + lst); // 출력: [Java, C, C++, Python]
// 2. 특정 위치에 데이터 삽입
lst.add(2, "C#");
System.out.println("삽입 후 List: " + lst); // 출력: [Java, C, C#, C++, Python]
// 3. 중복 데이터 허용
lst.add("Java");
System.out.println("중복 추가 후 List: " + lst); // 출력: [Java, C, C#, C++, Python, Java]
// 4. 데이터 삭제
lst.remove(2); // 인덱스 2 데이터 삭제
lst.remove("Python"); // "Python" 값 삭제
System.out.println("삭제 후 List: " + lst); // 출력: [Java, C, C++, Java]
// 5. 전체 데이터 비우기
lst.clear();
System.out.println("비운 후 List: " + lst); // 출력: []
}
}
출력 결과
List: [Java, C, C++, Python]
삽입 후 List: [Java, C, C#, C++, Python]
중복 추가 후 List: [Java, C, C#, C++, Python, Java]
삭제 후 List: [Java, C, C++, Java]
비운 후 List: []
3-2. ArrayList 순회 (Iterator 사용)
ArrayList를 순회하며 데이터를 확인하려면 Iterator를 사용할 수 있습니다.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListEx2 {
public static void main(String[] args) {
List<String> lst = new ArrayList<>();
lst.add("Java");
lst.add("C");
lst.add("C++");
lst.add("Python");
System.out.println("List: " + lst);
// Iterator 사용
System.out.println("===== Iterator로 데이터 순회 =====");
Iterator<String> it = lst.iterator(); // Iterator 생성
while (it.hasNext()) { // 다음 데이터가 있으면 true 반환
String item = it.next();
System.out.print(item + " "); // 각 데이터를 출력
}
System.out.println();
}
}
출력 결과
List: [Java, C, C++, Python]
===== Iterator로 데이터 순회 =====
Java C C++ Python
4. List와 ArrayList의 주요 메서드 정리
메서드 | 설명 | 예제 |
add(E e) | 데이터를 추가 | lst.add("Java") |
add(int index, E e) | 특정 위치에 데이터를 삽입 | lst.add(2, "C#") |
remove(Object o) | 특정 값을 삭제 | lst.remove("Python") |
remove(int index) | 특정 인덱스의 데이터를 삭제 | lst.remove(2) |
get(int index) | 특정 인덱스의 데이터를 가져옴 | lst.get(1) |
size() | 리스트의 크기 반환 | lst.size() |
clear() | 리스트의 모든 데이터를 삭제 | lst.clear() |
contains(Object o) | 특정 값이 리스트에 포함되었는지 확인 | lst.contains("Java") |
5. ArrayList와 LinkedList의 차이점
특징 | ArrayList | LinkedList |
내부 구조 | 동적 배열 기반 | 이중 연결 리스트 기반 |
검색 속도 | 빠름 (인덱스를 이용) | 느림 (순차 탐색) |
삽입/삭제 속도 | 느림 (데이터 이동 필요) | 빠름 (포인터 조정) |
메모리 사용량 | 상대적으로 적음 | 상대적으로 많음 |
6. 정리
- List는 순서를 유지하며 중복 데이터를 허용하는 Java 컬렉션 인터페이스입니다.
- ArrayList는 List를 구현한 클래스 중 하나로, 배열 기반으로 동작하며 검색 속도가 빠릅니다.
- 주요 메서드(add, remove, clear)와 순회 방식(Iterator 사용)을 익히면 데이터를 효과적으로 관리할 수 있습니다.

반응형
'개발 > JAVA' 카테고리의 다른 글
Java 컬렉션: 벡터(Vector) 배우기 (26) | 2025.01.10 |
---|---|
Java 자료구조: 스택(Stack)과 큐(Queue) 배우기! (16) | 2025.01.09 |
Java 컬렉션: HashSet과 HashTable 사용법 (2) | 2025.01.07 |
Java의 기본 클래스 Object: 객체의 기본 (2) | 2025.01.06 |
Java 기초편 - 배열 정렬과 복사 (2) | 2025.01.04 |