ArrayList
- ArrayList 는 기존의 Vector 를 개선한 것으로 구현 원리와 기능적으로 동일
- ArrayList 동기화 ❌, Vector 동기화 ✅
- List 인터페이스 구현 = 순서 ⭕, 중복 ⭕
- 데이터의 저장 공간의 배열을 사용 (배열 기반)
ArrayList 메서드
생성자
| |
---|
ArrayList() | 기본 생성자 |
ArrayList(Collection c) | 컬렉션 |
ArrayListI(int initialCapacity) | 배열의 길이 |
ArrayList list = new ArrayList(10);
추가 메서드
| |
---|
boolean add(Object o) | 마지막에 객체 추가 |
void add(int index, Object element) | 위치에 객체 추가 |
boolean addAll(Collection c) | 마지막에 컬렉션 추가 |
boolean addAll(int index, Collection c) | 위치에 컬렉션 추가 |
list.add(new Integer(5));
list.add(5);
삭제 메서드
| |
---|
boolean remove(Object o) | 객체 삭제 |
Object remove(int index) | 위치에 있는 객체 삭제 |
boolean removeAll(Collection c) | 컬렉션에 있는 객체 삭제 |
void clear() | 모든 객체 삭제 |
검색 메서드
| |
---|
int indexOf(Object o) | 순방향 검색 |
int lastIndexOf(Object o) | 역방향 검색 |
boolean contains(Object o) | 객체 존재 여부 |
Object get(int index) | 특정 위치 객체 반환 |
Object set(int index, Object element) | 특정 위치 객체 변경 |
나머지 메서드
| |
---|
List subList(int fromIndex, int toIndex) | 일부 리스트 범위 추출 |
Object[] toArray() | 객체 배열 반환 |
Object[] toArray(Object[] a) | |
boolean isEmpty() | 비어 있는지 확인 |
void trimToSize() | 빈 공간 제거 |
int size() | 저장된 객체의 개수 |
Object retainAll(Object o) | 두 객체의 겹치는 부분만 남기고 제거 |
ArrayList 객체 삭제 과정
- 첫 번째 객체부터 삭제하는 경우 배열 복사 발생 → 전부 안지워진다.
- 마지막 객체부터 삭제하는 경우 배열 복사 발생 안함 → 전부 지워짐
for(int i = list.size()-1; i >= 0; i--) {
list.remove(i);
}