다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
인터페이스를 사용하여 구현
주요 인터페이스: List
, Set
, Map
Map
은 독립된 인터페이스 출처: https://devbox.tistory.com/entry/Java-%EC%BB%AC%EB%A0%89%EC%85%98-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC
List
순서 유지 O
중복 저장 O
ArrayList
, Vector
, Stack
, LinkedList
Set
순서 유지 X
중복 저장 X
HashSet
, TreeSet
Map
키, 값 쌍으로 저장
순서 유지 X
중복 저장 X
ArrayList
, Vector
, Stack
, LinkedList
add()
, addAll()
contains()
, containsAll()
, iterator()
, equals()
, isEmpty()
, size()
clear()
, remove()
, removeAll()
, retainAll()
toArray()
List<E>
일렬로 객체를 나열해놓은 구조
인덱스 자동 부여 / 인덱스로 객체 관리(검색 및 삭제)
ArrayList
, Vector
, LinkedList
, Stack
등의 클래스를 구현할 때 사용됨
add(인덱스, 요소)
: 원하는 인덱스에 객체 추가
addAll(인덱스, 컬렉션)
: 원하는 인덱스에 컬렉션 추가
set(인덱스, 요소)
: 주어진 인덱스에 객체 저장
get(인덱스)
: 해당 인덱스에 위치한 객체 반환
indexOf(요소)
: 해당 객체의 인덱스 반환(앞→뒤 방향으로 탐색)
lastIndexOf(요소)
: 해당 객체의 인덱스 반환(뒤→앞 방향으로 탐색)
listIterator()
: listIterator 반환
listIterator(인덱스)
: listIterator 반환(해당 인덱스부터 탐색)
subList(시작 인덱스, 끝 인덱스)
: 시작 인덱스 부터 끝 인덱스 사이에 있는 객체 반환
remove(인덱스)
: 해당 인덱스의 객체 삭제 및 반환
remove(객체)
: 해당 객체 삭제
sort(비교자)
: 해당 비교자로 정렬List 인터페이스로 구현
Vector를 개선한 것으로 기능은 동일하지만 더 많이 사용됨
배열과 유사하지만 생성 시 크기를 고정하지 않는 특징
저장 용량 초과 시 자동으로 용량을 늘림
데이터 연속적으로 존재
List<타입 파라미터> 객체명 = new ArrayList<타입 파라미터>(초기 저장용량);
데이터를 효율적으로 추가, 삭제, 변경 가능
데이터가 불연속적으로 존재
데이터간 연결 구조를 가짐
node 구성: 데이터 + 연결된 노드의 주소값
연결리스트의 삭제: prev(이전 노드)가 next(다음 노드)를 참조하도록 변경하면 현재 노드를 삭제할 수 있음 → 배열에 비해 처리속도 높음
연결리스트의 삽입: 새로운 노드를 참조하도록 하고, 새로운 노드가 다음 노드를 참조하게 하여 삽입
컬렉션에 저장된 요소를 읽어옴
hasNext()
: 다음 객체가 존재하면 true, 아니면 false 반환
next()
: 하나의 객체 가져옴
remove()
: 객체 제거