List는 자바 Collection Framework에서 가장 많이 사용되는 인터페이스 중 하나로, 순서가 있는 데이터 집합을 다룰 때 사용됩니다. 각 데이터 요소는 인덱스(순번)를 가지며, 이를 통해 데이터에 빠르게 접근하거나 조작할 수 있습니다. 특히, 중복 요소를 허용하므로 동일한 값의 데이터를 여러 번 저장할 수 있는 것이 특징입니다.
List는 자바에서 배열의 한계를 보완하기 위해 등장했으며, 크기가 동적으로 변할 수 있는 동적 배열 구조를 제공합니다. 배열처럼 정적인 크기 제한이 없으므로 다양한 데이터를 유연하게 다룰 수 있습니다.
import java.util.ArrayList;
import java.util.List;
public class ListExample {
public static void main(String[] args) {
// List 생성 및 초기화
List<String> nameList = new ArrayList<>();
// 데이터 추가
nameList.add("김철수");
nameList.add("이영희");
nameList.add("박지수");
nameList.add("김철수"); // 중복 허용
// 데이터 출력
System.out.println("이름 목록: " + nameList);
}
}
위 예제에서 ArrayList는 List 인터페이스를 구현한 클래스입니다. "김철수"라는 중복된 데이터가 저장된 것을 확인할 수 있습니다.
Collection 프레임워크에서의 위치
자바의 Collection Framework에서 List는 java.util.Collection 인터페이스를 상속받은 하위 인터페이스입니다. List는 데이터를 순서대로 저장하며, 중복된 데이터를 허용합니다.
List의 주요 구현 클래스는 아래와 같습니다:
- ArrayList: 동적 배열로, 데이터를 빠르게 조회 가능.
- LinkedList: 연결 리스트 구조로, 빈번한 삽입 및 삭제에 유리.
- Vector: 동기화된 동적 배열로, 멀티스레드 환경에 적합.
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
// LinkedList 생성
List<String> animalList = new LinkedList<>();
// 데이터 추가
animalList.add("호랑이");
animalList.add("사자");
animalList.add("호랑이"); // 중복 허용
// 인덱스를 이용한 데이터 접근
System.out.println("첫 번째 동물: " + animalList.get(0));
}
}
List의 주요 특징: 순서 유지와 중복 허용
- 순서 유지
List에 데이터를 추가한 순서가 그대로 유지됩니다. 데이터를 삽입한 순서대로 유지되기 때문에 순차적으로 데이터를 처리해야 하는 경우 유용합니다. - 중복 허용
동일한 데이터를 여러 번 추가할 수 있습니다. 이는 집합(Set)과의 주요 차이점입니다.
import java.util.ArrayList;
public class ListFeaturesExample {
public static void main(String[] args) {
// ArrayList 생성
List<Integer> numberList = new ArrayList<>();
// 데이터 추가
numberList.add(1);
numberList.add(2);
numberList.add(1); // 중복 허용
numberList.add(3);
// 데이터 출력
System.out.println("숫자 리스트: " + numberList);
// 순서 확인
for (int i = 0; i < numberList.size(); i++) {
System.out.println(i + "번째 요소: " + numberList.get(i));
}
}
}
위 예제는 숫자를 순서대로 추가한 후, 이를 인덱스를 통해 출력하여 List의 특징을 보여줍니다.
데이터 수정 및 삭제
import java.util.ArrayList;
import java.util.List;
public class ModifyListExample {
public static void main(String[] args) {
List<String> fruitList = new ArrayList<>();
fruitList.add("사과");
fruitList.add("바나나");
fruitList.add("포도");
// 데이터 수정
fruitList.set(1, "딸기");
// 데이터 삭제
fruitList.remove("포도");
// 최종 결과 출력
System.out.println("최종 과일 목록: " + fruitList);
}
}
리스트 정렬
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortListExample {
public static void main(String[] args) {
List<String> cityList = new ArrayList<>();
cityList.add("서울");
cityList.add("부산");
cityList.add("인천");
cityList.add("대구");
// 정렬
Collections.sort(cityList);
// 결과 출력
System.out.println("정렬된 도시 목록: " + cityList);
}
}
리스트 탐색
import java.util.ArrayList;
import java.util.List;
public class SearchListExample {
public static void main(String[] args) {
List<String> nameList = new ArrayList<>();
nameList.add("김철수");
nameList.add("이영희");
nameList.add("박지수");
// 데이터 탐색
if (nameList.contains("이영희")) {
System.out.println("이영희가 목록에 있습니다.");
}
}
}
참고 사이트
자바 공식 문서: https://docs.oracle.com/javase/8/docs/api/java/util/List.html
Collection Framework 가이드: https://docs.oracle.com/javase/tutorial/collections/index.html
'JAVA' 카테고리의 다른 글
[JAVA] List의 데이터 변환과 처리 (0) | 2024.11.17 |
---|---|
[JAVA] List의 데이터 정렬과 검색 (1) | 2024.11.17 |
[JAVA] List의 주요 구현체와 특징 (0) | 2024.11.16 |
[JAVA] List 인터페이스의 주요 메서드 (0) | 2024.11.16 |
[JAVA] Jackson 자주 발생하는 오류와 해결 방법 (1) | 2024.11.15 |
[JAVA] Jackson과 Spring Boot 통합 (0) | 2024.11.15 |
[JAVA] Jackson을 활용한 XML 데이터 처리 (0) | 2024.11.14 |
[JAVA] Jackson의 성능 최적화 전략 (0) | 2024.11.13 |