List
List는 순서가 있는 데이터의 집합을 다루는 인터페이스로써, 중복을 허용하며 인덱스를 통해 요소에 접근 할 수 있음.
특징
- 순서 보장 : 요소가 추가된 순서가 유지되며, 인덱스를 통해 순차적으로 접근 할 수 있음
- 중복 허용 : 같은 값의 요소를 여러 번 추가 할 수 있음
- 인덱스 기반 접근 : 인덱스를 사용해 특정 위치의 요소를 가져오거나 수정 할 수 있음
- 동적 크기 : 필요에 따라 크기가 자동으로 늘어나거나 줄어듦
주요 메서드
add(E e) : 요소를 리스트에 추가
get(int index) : 지정된 인덱스에 있는 요소를 반환
remove(int index) : 지정된 인덱스의 요소를 제거
size() : 리스트의 크기를 반환
contains(Object o) : 리스트에 특정 요소가 포함되어 있는지 확인
isEmpty() : 리스트가 비어 있는지 확인
List의 구현체
Java에서 List는 인터페이스 이기 때문에, 직접 사용할 수 없으며, 이를 구현한 클래스를 사용해야함.
순차리스트 : ArrayList / 연결 리스트 : LinkedList 를 주로 사용함.
ArrayList
- 배열 기반의 리스트이며, 인덱스를 통한 빠른 읽기와 검색이 장점
- 요소를 추가하거나 삭제할 때는 배열 크기 조정이 필요하기 때문에 성능이 저하 될 수 있음
- 요소의 추가는 주로 리스트 끝에 이루어지며, 중간에 요소를 삽이하거나 삭제할 경우 비교적 느려짐
package list;
import java.util.ArrayList;
import java.util.List;
public class List01_ArrayList {
public static void main(String[] args) {
// Java List ArrayList
List<String> list = new ArrayList<>();
list.add("첫번째");
list.add("두번째");
System.out.println(" >>>>> " + list.get(0));
System.out.println(" >>>>> " + list.size());
}
}
LinkedList
- 이중 연결 리스트 구조로 구현되어 있어 삽입과 삭제가 빠름
- 인덱스를 통한 접근은 순차 탐색이 필요하여 느림
- Queue와 Deque의 기능을 지원하며, 리스트의 앞뒤에서 요소를 추가하거나 삭제하는 작업이 빠름
package list;
import java.util.LinkedList;
import java.util.List;
public class List02_LinkedList {
public static void main(String[] args) {
// Java List LinkedList
List<String> list = new LinkedList<>();
list.add("첫번째");
list.add("세번째");
System.out.println(" >>>>> " + list.toString());
// 데이터 중간 삽입
list.add(1, "두번째");
System.out.println(" >>>>> " + list.toString());
}
}
ArrayList와 LinkedList 비교
- ArrayList는 읽기 및 검색이 빠르고, 요소의 추가/삭제는 리스트 끝에서만 빠름
- LinkedList는 삽입/삭제 작업이 빈번하게 발생하는 경우에 적합하지만, 인덱스 접근 속도가 느림
요약
List 인터페이스는 순서를 보장하고 중복을 허용하는 자료구조. ArrayList는 배열 기반이라 읽기와 검색이 빠르고, LinkedList는 삽입/삭제가 빠르지만 인덱스 접근은 느림.
'자료구조 & 알고리즘 > 자료구조 & 알고리즘' 카테고리의 다른 글
[자료구조] List - 순차리스트 (0) | 2024.09.25 |
---|---|
[자료구조] List - ArrayList 실습 - 학생 수 입력 및 출력 (0) | 2024.09.20 |
[자료구조] Deque (1) | 2024.09.16 |
[자료구조] 선형자료구조 (1) | 2024.09.13 |
[자료구조] Queue 구현한 간단한 대기열 시스템 (0) | 2024.09.12 |