Java

Java_컬렉션 자료구조_List 컬렉션

ssmm95 2024. 10. 17. 17:16

- List 컬렉션 

: 객체를 인덱스로 관리하기 때문에 객체를 저장하면 인덱스 가 부여되고 인덱스로 객체를 검색, 삭제할 수 있는 기능을 제공한다

> 자바의 컬렉션 프레임워크에서 순서가 있는 데이터를 저장하고 관리하는 인터페이스이다 

 

List의 특징 

순서유지 : 요소가 추가된 순서를 유지한다 

예) 첫 번째 요소는 인덱스 0으로 접근

중복허용 : 동일한 값(요소)을 여러 번 추가 할 수 있다

 

 

구현 클래스 설명 특징
ArrayList 배열 기반의 List로, 가장 많이 사용되는 List 구현 클래스. - 빠른 읽기/쓰기: 인덱스를 통해 요소에 접근하는 속도가 빠름
- 삽입/삭제 시 성능 저하: 중간에 삽입 또는 삭제할 때 요소를 이동해야 해서 성능이 떨어질 수 있음
LinkedList 연결 리스트 기반의 List로, 요소들이 노드로 연결되어 있는 구조. - 삽입/삭제에 유리: 리스트 중간에서 요소를 추가하거나 삭제할 때 성능이 좋음
- 읽기 속도 느림: 인덱스로 접근 시 순차적으로 탐색해야 해서 ArrayList보다 느림
Vector ArrayList와 비슷한 구조지만, 동기화가 적용된 스레드 안전한 List. - 동기화 지원: 여러 스레드가 동시에 접근해도 안전하지만, 성능이 떨어질 수 있음
- ArrayList보다 덜 사용됨 (성능 이유로)
Stack Vector를 상속받아 만든 클래스로, LIFO(Last In First Out) 방식으로 요소를 관리하는 구조. - 후입선출: push()로 요소를 추가하고, pop()으로 가장 마지막에 추가된 요소를 제거함
- Legacy 클래스로, 최근에는 ArrayDeque나 LinkedList로 스택을 구현하는 것이 권장됨

 

 

기능 메서드 설명
객체 추가 boolean add(E element) List의 맨 끝에 요소를 추가
void add(int index, E element) 특정 인덱스에 요소를 삽입
set(int index, E element) 특정 인덱스의 요소를 새로운 값으로 변경
객체 검색 boolean contains(Object o) 특정 요소가 List에 포함되어 있는지 여부를 확인
E get(int index) 인덱스를 사용해 해당 위치의 요소를 가져옴
int size() List의 **크기(요소의 개수)**를 반환
isEmpty() List가 비어 있는지 여부를 확인
객체 삭제 E remove(int index) 특정 인덱스에 있는 요소를 제거
void clear() List의 모든 요소를 제거
boolean remove (Object o) 주어진 객체를 삭제
  indexOf (Object o) 특정 요소가 처음으로 등장하는 인덱스를 반환해요. 없으면 -1을 반환해요.