자바에서는 List 인터페이스와 여러 가지 List 구현 클래스를 사용하여 데이터를 저장하고 관리할 수 있습니다. 이 포스팅에서는 자바의 List에 대해 알아보고, 각각의 구현 클래스와 사용 방법을 자세히 살펴보겠습니다.
"List"는 자바에서 컬렉션 프레임워크(Collection Framework)의 일부로 제공되는 인터페이스 중 하나입니다. List는 순서가 있는 데이터의 집합으로, 데이터를 중복 저장할 수 있으며 각 요소는 인덱스로 접근할 수 있습니다. List는 많은 프로그래밍 상황에서 배열과 유사한 동작을 제공하지만, 배열과 달리 크기가 가변적이어서 데이터를 동적으로 추가하거나 제거할 수 있습니다.
List 인터페이스는 java.util 패키지에 속하며 다음과 같은 주요 특징을 가지고 있습니다.
순서가 있음(Sequential): List 내의 요소들은 추가된 순서대로 유지됩니다. 이 순서를 인덱스로 표현하며, 0부터 시작하여 순차적으로 요소에 접근할 수 있습니다.
중복 요소 허용: List는 동일한 요소를 중복하여 저장할 수 있습니다. 따라서 동일한 데이터를 여러 번 저장하는 것이 가능합니다.
가변 크기: List는 동적으로 크기를 조절할 수 있어서 요소를 추가하거나 제거할 때 크기를 자동으로 조절합니다.
인덱스 기반 접근: List의 각 요소는 0부터 시작하는 인덱스를 통해 접근할 수 있습니다. 이것은 요소를 검색하고 수정하는 데 유용합니다.
List 인터페이스를 구현한 여러 클래스: Java에서는 List 인터페이스를 구현한 다양한 클래스가 제공됩니다. 가장 흔히 사용되는 것으로 ArrayList, LinkedList, 및 Vector 등이 있습니다.
List의 주요 특징을 간략히 정리하면 다음과 같습니다.
순서 유지: 요소는 추가된 순서대로 유지되며, 인덱스를 통해 순차적으로 접근할 수 있습니다.
중복 허용: 동일한 요소를 중복하여 저장할 수 있습니다.
가변 크기: 요소를 추가하거나 제거할 수 있으며 크기는 자동으로 조절됩니다.
인덱스 기반 접근: 각 요소는 인덱스로 식별되며, 인덱스를 통해 요소에 접근할 수 있습니다.
풍부한 기능: List 인터페이스를 구현한 클래스들은 요소 추가, 삭제, 수정, 검색, 정렬 및 순회를 위한 다양한 메서드와 기능을 제공합니다.
List 인터페이스와 그를 구현한 클래스들은 Java 프로그래밍에서 매우 중요하며, 다양한 데이터 저장 및 관리 작업에 사용됩니다.
ArrayList는 자바에서 매우 유용하게 사용되는 List 인터페이스를 구현한 클래스 중 하나로, 가변 크기 배열(dynamic array)로 작동합니다. ArrayList는 배열과 유사하지만 크기를 동적으로 조절할 수 있는 장점을 가지고 있으며, 데이터를 추가하거나 삭제할 때 자동으로 크기를 조절합니다.
가변 크기: ArrayList는 크기가 가변적이기 때문에 데이터를 추가하거나 제거할 때 크기를 자동으로 조절합니다. 크기를 직접 지정할 필요가 없습니다.
인덱스 기반 접근: ArrayList의 요소에는 0부터 시작하는 인덱스를 사용하여 접근할 수 있습니다.
데이터 중복 허용: ArrayList는 중복된 데이터를 저장할 수 있습니다.
배열과 유사한 성능: ArrayList는 배열과 유사한 성능을 가지며, 데이터를 읽거나 수정하는 데 빠릅니다.
동기화 지원하지 않음: ArrayList는 동기화를 제공하지 않기 때문에 멀티스레딩 환경에서 안전하지 않을 수 있습니다. 멀티스레딩 환경에서 안전한 버전을 원한다면 Collections.synchronizedList()를 사용할 수 있습니다.
ArrayList를 생성하고 사용하는 간단한 예제를 통해 ArrayList의 기본 사용법을 살펴봅시다.
import java.util.ArrayList;
public class ArrayListExample {
public static void main(String[] args) {
// ArrayList 생성
ArrayList<String> fruits = new ArrayList<>();
// 데이터 추가
fruits.add("사과");
fruits.add("바나나");
fruits.add("딸기");
fruits.add("오렌지");
// 데이터 접근
System.out.println("첫 번째 과일: " + fruits.get(0));
// 데이터 수정
fruits.set(1, "포도");
// 데이터 삭제
fruits.remove(2);
// 데이터 순회
for (String fruit : fruits) {
System.out.println(fruit);
}
// ArrayList 크기
System.out.println("ArrayList 크기: " + fruits.size());
}
}
이 예제에서는 ArrayList를 생성하고 과일 데이터를 추가, 접근, 수정, 삭제하고 순회하는 방법을 보여줍니다. ArrayList의 크기를 확인하기 위해 size() 메서드를 사용합니다. 이것은 기본적인 ArrayList 사용 방법을 보여주며, ArrayList의 다양한 기능을 활용하여 데이터를 관리할 수 있습니다.
ArrayList는 다양한 데이터 유형을 저장할 수 있으며, 필요에 따라 사용자 정의 클래스나 다른 객체를 저장하는 데도 활용됩니다.
이번 포스팅에서는 List와 ArrayList에 대해 알아보았습니다.
다음 포스팅에서는 다른 유형의 list까지 알아보도록 하겠습니다.