컬렉션의 주요 인터페이스
자료들을 순차적으로 나열한 자료구조로 인덱스로 관리되며, 중복해서 객체 저장 가능하다.
구현 클래스로 ArrayList와 Vector, LinkedList가 있다.
ArrayList
- List의 후손으로 초기 저장 용량은 10으로 자동 설정되며 따로 지정도 가능하고
저장 용량을 초과한 객체들이 들어오면 자동으로 늘어나며 고정도 가능하며
동기화(Synchronized)를 제공하지 않는다.
(동기화 : 하나의 자원(데이터)에 대해 여러 스레드가 접근 하려 할 때 한 시점에서 하나의 스레드만 사용할 수 있도록 하는 것)
- ex)
List<E> list = new ArrayList<E>();
Vector
- List의 후손 ArrayList와 동등하지만 동기화(Synchronized)를 제공한다는 점이 ArrayList와 차이점이다.
(List 객체들 중에서 가장 성능이 좋지 않음)
LinkedList
- List의 후손으로, 인접 참조를 링크해 체인처럼 관리한다. 특정 인덱스에서 객체를 제거하거나 추가하게 되면 바로 앞/뒤 링크만 변경하면 되기 때문에 객체 삭제와 삽입이 빈번하게 일어나는 곳에서는 ArrayList보다 성능이 좋음 (추가, 제거할 때 효율이 좋음)
List 계열 주요 메서드
1) 객체 추가
- 메서드 : add(E e), 리턴 타입 : boolean
주어진 객체를 맨 끝에 추가
- 메서드 : add(int index, E element), 리턴 타입 : void
주어진 인덱스에 객체를 추가
- 메서드 : addAll(Collection<? extends E> c), 리턴 타입 : boolean
주어진 Collection타입 객체를 리스트에 추가
- 메서드 : set(int index, E element), 리턴 타입 : E
주어진 인덱스에 저장된 객체를 주어진 객체로 바꿈
2) 객체 검색
- 메서드 : contains(Object o), 리턴 타입 : boolean
주어진 객체가 저장되어 있는지 여부
- 메서드 : get(int index), 리턴 타입 : E
주어진 인덱스에 저장된 객체를 리턴
- 메서드 : iterator(), 리턴 타입 : Iterator<E.>
저장된 객체를 한번씩 가져오는 반복자 리턴
- 메서드 : isEmpty(), 리턴 타입 : boolean
컬렉션이 비어 있는지 조사
- 메서드 : size(), 리턴 타입 : int
저장되어 있는 전체 객체수를 리턴
3) 객체 삭제
- 메서드 : clear(), 리턴 타입 : void
저장된 모든 객체를 삭제
- 메서드 : remove(int index), 리턴 타입 : E
주어진 인덱스에 저장된 객체를 삭제
- 메서드 : remove(Object o), 리턴 타입 : boolean
주어진 객체를 삭제