되자!백엔드개발자

Java(자바) - Collection: ArrayList 본문

개발공부/JAVA

Java(자바) - Collection: ArrayList

HyunJng 2022. 8. 18. 11:58

ArrayList


Object배열을 이용한 자료구조이다. List이므로 순서가 유지되고 중복이 허용된다.

배열을 사용하므로 구조가 간단하고 사용이 쉽고 데이터를 읽어오는데 걸리는 시간(접근시간, access time)이 가장 빠르다는 장점이 있다.  다만 배열은 크기의 변경이 불가능하고 중간에 접근하려는 데이터의 추가/삭제에 시간이 많이 걸린다.

그러므로 ArrayList는 더이상 공간이 없으면 더 큰 배열을 생성하여 기존 배열을 복사한뒤 저장된다. 이러한 과정은 시간이 많이 걸리므로 처음 생성할 때 저장할 요소의 개수를 고려하여 실제 저장할 개수보다 약간 여유가 있는 크기로 하는 것이 좋다. 뒤에 나오겠지만 크기 수정이 많이 필요한 경우라면 ArrayList보다는 LinkedList가 더 적합하다.

ArrayList자료구조

Size안에 Null을 넣은 것은 Null이라고 반드시 Capacity에만 포함되지 않는 다는 것을 표현하기 위해서이다.

 

*** ArrayList는 기존의 Vector을 개선한 것이기에 가능하면 Vector보다는 ArrayList 사용을 권장한다.

메서드 설명
ArrayList() 크기가 10인 ArrayList 생성자
ArrayList(Collection c) 주어진 컬렉션이 저장된 ArrayList생성
ArrayList(int initialCapacity) 초기용량 지정하여 ArrayList생성
boolean add(Object o) 마지막에 객체 추가, 성공하면 true.
void add(int index, Object element) index위치에 객체 추가, 이미 존재한 index위치의 객체는 삭제 없이 뒤로 한칸씩 밀려나서 존재.
Object set(int index, Object o) index위치에 객체 추가, 이미 존제한 index위치의 객체는 삭제.
boolean addAll(Collection c) 주어진 컬렉션의 모든 객체를 저장
boolean addAll(int index,  Collection c) index위치에 컬렉션의 모든 객체 저장.
void clear() 완전히 비움
Object clone() 복제
boolean contains(Object o) o가 ArrayList에 포함되었는지 확인
void ensureCapacity(int minCapacity) ArrayList의 용량이 최소한 minCapacity가 되도록 한다. 이미 그거보다 크면 변화 없음.
Object get(int index) index위치의 객체 반환
int indexOf(Object o) 객체의 인덱스 반환
boolean isEmpty() 비었는지 확인
Iterator iterator() iterator 반환
int lastIndexOf(Object o) 객체가 저장된 위치를 역방향으로 검색해서 반환
ListIterator listIterator() Iterator반환
boolean remove(Object o) o와 동일한 객체 삭제. 성공하면 true.
Object remove(int index) index위치의 객체 삭제후 반환. index 이후의 객체들은 한칸씩 앞으로 당겨진다.
boolean removeAll(Collection c) c에 저장된 객체들과 동일한 객체들을 전부 제거
boolean retainAll(Collection c) c에 저장된 객체들과 동일한 객체들 제외한 모든 객체 제거
int size() 저장된 객체의 수 반환
void sort(Comparator c) 지정된 정렬기준(c)으로 정렬
List subList(int fromIdx, int toIdx) fromIdx부터 toIdx까지의 객체를 List형태로 반환
Object[] toArray() 저장된 모든 객체를 객체배열의 형태로 반환
Object[] toArray(Objectp[] a) 저장된 모든 객체를 a에 담아 반환
void trimToSize() 용량을 크기에 맞게 줄인다.