다른 컬렉션, 자료구조에 대해 궁금하다면 아래의 링크를 클릭해보자👍
ArrayList?
List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용하고
순차적으로 추가/삭제 하는 경우에는 ArrayList가 LinkedList보다 빠르다
컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션이다.🔥
ArrayList는 배열을 이용한 자료구조의 형태여서 데이터를 읽어오고 저장하는 데는 좋지만
데이터가 저장공간(Size가 Capacity)보다 커져서 저장공간(Capacity)를 넘게되어 용량을 변경해야 할 때는
새로운 배열을 생성 한 후 기존의 배열로 부터 데이터를 복사해야 하기 때문에 효율이 떨어지기 때문에
처음 인스턴스를 생성 할 때 저장 개수를 잘 고려해 충분한 용량의 인스턴스를 생성하는게 좋다.
Size가 Capacity보다 커져서 Capacity가 늘어 나는 과정의 효율이 떨어짐
ArrayList의 생성자와 메소드
생성자와 메소드에 대해 알아보자🐱🏍
생성자 | 설명 |
ArrayList() | 크기가 10인 ArrayList를 생성 |
ArrayList(Collection c) | 주어진 컬렉션이 저장된 ArrayList를 생성 |
ArrayList(int initialCapacity) | 지정된 초기용량을 갖는 ArrayList생성 |
ArrayList list1 = new ArrayList(); // 크기가 10인 ArrayList를 생성
ArrayList list2 = new ArrayList(list1); // 크기와 내용이 list1과 동일한 ArrayList를 생성
ArrayList list3 = new ArrayList(20); // 작성된 숫자만큼의 크기를 갖는 ArrayList를 생성
⭐클릭시 해당 예제로 이동합니다!
메서드 | 설명 | 예제 |
Object get(in index) | 지정된 위치(index)에 저장된 객체를 반환한다. | ⭐ |
List subList(int fromIndex, int toIndex) | fromIndex부터 toIndex사이에 저장된 객체를 반환한다. | ⭐ |
boolean add(Object obj) | ArrayList의 마지막에 객체를 추가한다. 추가에 성공하면 true를 반환 | ⭐ |
void add(int index, Object element) | 지정된 위치(index)에 객체를 저장한다. 자리에 있던 기존의 데이터는 뒤로 밀려나기만 할 뿐 삭제되지 않는다. ex) add(2, Object) → 기존, 기존, 추가, 기존, 기존 |
|
void addAll(Collection c) | 주어진 컬렉션의 모든 객체를 저장한다.(마지막 index의 뒤로 붙임) ex) addAll(Collection) → 기존, 기존, 기존, 기존, 추가, 추가, ... |
⭐ |
void addAll(int index, Collection c) | 지정한 위치부터 주어진 컬렉션의 데이터를 저장한다. 자리에 있던 기존의 데이터는 뒤로 밀려나기만 할 뿐 삭제되지 않는다. ex) addAll(2, Collection) → 기존, 기존, 추가, 추가, ... , 기존, 기존 |
|
Object set(int index, Object obj) | 주어진 객체(obj)를 지정한 위치(index)에 저장한다. 자리에 있던 기존의 데이터는 삭제되고 새로운 데이터가 대체되어 들어간다. ex) set(2, Object) → 기존, 기존, 대체, 기존, 기존 |
⭐ |
Object clone() | ArrayList를 복제한다. | ⭐ |
Object remove(int index) | 지정된 위치(index)에 있는 객체를 제거한다. | ⭐ |
boolean remove(Object obj) | 지정된 객체를 제거한다.(성공하면 true) | |
boolean removeAll(Collection c) | 지정한 컬렉션에 저장된 것과 동일한 객체들을 ArrayList에서 제거한다. | |
boolean retainAll(Collection c) | ArrayList에 저장된 객체 중에서 주어진 컬렉션과 공통된 것들만 남기고 제거한다. |
⭐ |
void clear() | ArrayList를 완전히 비운다. | ⭐ |
int size() | ArrayList에 저장된 객체의 개수를 반환한다. | ⭐ |
boolean isEmpty() | ArrayList가 비어있는지 확인한다. | ⭐ |
void sort(Comparator c) | 지정된 정렬기준(c)으로 ArrayList를 정렬한다. | ⭐ |
boolean contains(Object obj) | 지정된 객체(obj)가 ArrayList에 포함되어 있는지 확인한다. | ⭐ |
int indexOf(Object obj) | 지정된 객체(obj)가 저장된 위치를 찾아 반환한다. | ⭐ |
int lastIndexOf(Object obj) | 지정된 객체(obj)가 저장된 위치를 뒤에서 부터 역방향으로 찾아 반환한다. | ⭐ |
Iterator iterator() | ArrayList의 Iterator객체를 반환한다. | ⭐ |
ListIterator listIterator() | ArrayList의 ListIterator를 반환한다. | ⭐ |
ListIterator listIterator(int index) | ArrayList의 지정된 위치부터 시작하는 ListIterator를 반환한다. | |
void ensureCapacity(int minCapacity) | ArrayList의 용량이 최소한 minCapacity가 되도록 한다. | ⭐ |
void trimToSize() | 용량의 크기에 맞게 줄인다.(빈 공간을 없앤다.) | ⭐ |
Object[] toArray() | ArrayList에 저장된 모든 객체들을 객체배열로 반환한다. | ⭐ |
Object[] toArray(Obejct[] objArr) | ArrayList에 저장된 모든 객체들을 객체배열 objArr에 담아 반환한다. |
예제
get(in index)
ArrayList list1 = new ArrayList();
list1.add(1);
list1.add(2);
System.out.println(list1.get(1));
// [2]
subList(int fromIndex, int toIndex)
ArrayList list1 = new ArrayList();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
System.out.println(list1.subList(1, 3));
// [2, 3]
add(Object obj)
ArrayList list1 = new ArrayList();
list1.add(1);
list1.add(2);
System.out.println(list1);
// [1, 2]
add(int index, Object element)
ArrayList list1 = new ArrayList();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(1, 4); // index 1 에 숫자 4를 추가
System.out.println(list1);
// [1, 4, 2, 3]
addAll(Collection c)
ArrayList list1 = new ArrayList();
list1.add("list1");
list1.add("list1");
ArrayList list2 = new ArrayList();
list2.add("list2");
list2.add("list2");
list1.addAll(list2); // list1에 list2의 내용을 추가한다.
System.out.println(list1);
// [list1, list1, list2, list2]
addAll(int index, Collection c)
ArrayList list1 = new ArrayList();
list1.add("list1");
list1.add("list1");
ArrayList list2 = new ArrayList();
list2.add("list2");
list2.add("list2");
list1.addAll(1, list2);
System.out.println(list1);
// [list1, list2, list2, list1]
set(int index, Object obj)
ArrayList list1 = new ArrayList();
list1.add("list1");
list1.add("list1");
list1.add("list1");
list1.set(1, "setData"); // index 1번의 데이터를 문자열 "setData"로 변경한다.
System.out.println(list1);
// [list1, setData, list1]
clone()
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
ArrayList list2 = (ArrayList) list1.clone();
System.out.println(list2);
// [1, 2, 3]
remove(int index)
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
list1.remove(1); //index 1의 데이터 삭제
System.out.println(list1);
// [1, 3]
remove(Object obj)
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
list1.remove("1"); //"1"인 데이터와 일치하는 데이터 삭제
System.out.println(list1);
// [2, 3]
removeAll(Collection c)
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
ArrayList list2 = new ArrayList();
list2.add("1");
list2.add("2");
list1.removeAll(list2); // list1의 데이터에서 list2와 일치하는 데이터 삭제
System.out.println(list1);
// [3]
retainAll(Collection c)
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
ArrayList list2 = new ArrayList();
list2.add("1");
list2.add("2");
//list1의 데이터와 list2의 데이터를 비교해서 일치하지 않는 데이터만 제거
list1.retainAll(list2);
System.out.println(list1);
// [1,2]
clear()
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
list1.clear(); // list1의 데이터를 모두 비운다.
System.out.println(list1);
// []
size()
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
System.out.println(list1.size()); // list1에 저장된 객체의 개수를 반환한다.
// 3
isEmpty()
ArrayList list1 = new ArrayList();
list1.add("1");
list1.add("2");
list1.add("3");
System.out.println(list1.isEmpty()); // 비어있지 않으면 false
ArrayList list2 = new ArrayList();
System.out.println(list2.isEmpty()); // 비어있으면 true
// false
// true
sort(Comparator c)
ArrayList list1 = new ArrayList();
list1.add("3");
list1.add("2");
list1.add("1");
list1.sort(Comparator.naturalOrder());
System.out.println(list1);
list1.sort(Comparator.reverseOrder());
System.out.println(list1);
// [1, 2, 3]
// [3, 2, 1]
contains(Object obj)
ArrayList list1 = new ArrayList();
list1.add("3");
list1.add("2");
list1.add("1");
System.out.println(list1.contains("1")); // list1안에 "1"이 있는지 확인
// true
indexOf(Object obj)
ArrayList list1 = new ArrayList();
list1.add("0");
list1.add("1");
list1.add("2");
list1.add("3");
// list1안에 "0"의 위치는 반환 받는다. (앞에서 부터 검색)
System.out.println(list1.indexOf("0"));
// 0
lastIndexOf(Object obj)
ArrayList list1 = new ArrayList();
list1.add("0");
list1.add("1");
list1.add("2");
list1.add("3");
// list1안에 "0"의 위치는 반환 받는다. (뒤에서 부터 검색)
System.out.println(list1.lastIndexOf("0"));
// 0
iterator()
ArrayList list1 = new ArrayList();
list1.add("0");
list1.add("1");
list1.add("2");
list1.add("3");
Iterator it = list1.iterator();
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}
// 0
// 1
// 2
// 3
listIterator()
ArrayList list1 = new ArrayList();
list1.add("0");
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
ListIterator it = list1.listIterator(); // ArrayList의 ListIterator를 반환한다
while(it.hasNext()) {
System.out.print(it.next());
}
System.out.println();
while(it.hasPrevious()) {
System.out.print(it.previous());
}
// 01234
// 43210
listIterator(int index)
ArrayList list1 = new ArrayList();
list1.add("0");
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4");
// index 2에서 시작하는 ListIterator를 반환한다.
ListIterator it = list1.listIterator(2);
while(it.hasNext()) {
System.out.print(it.next());
}
// 234
ensureCapacity(int minCapacity)
ArrayList list1 = new ArrayList();
list1.ensureCapacity(30); // 최소 넓이가 30으로 고정된다.
trimToSize()
ArrayList list1 = new ArrayList();
list1.trimToSize(); // 용량의 크기에 맞게 빈 공간을 제거한다.
toArray()
ArrayList list1 = new ArrayList();
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
Object[] arr = list1.toArray();
System.out.println(Arrays.toString(arr));
// [1, 2, 3, 4]
toArray(Obejct[] objArr)
ArrayList list1 = new ArrayList();
list1.add(1);
list1.add(2);
Object[] arr1 = {0, 1, 2, 3, 4, 5};
Object[] arr = list1.toArray(arr1);
System.out.println(Arrays.toString(arr));
// [1, 2, null, 3, 4, 5]
댓글