본문 바로가기
JAVA BASE/Collection(컬렉션) - 자료구조

02. [자바] ArrayList - 생성자, 메소드

by staticClass 2020. 12. 30.

다른 컬렉션, 자료구조에 대해 궁금하다면 아래의 링크를 클릭해보자👍

 

01. [자바] 컬렉션 프레임워크(Collections Framework)

컬렉션 프레임워크란? 다수의 데이터를 다루는 데 필요한 배열과 비슷하지만 더 성능이 뛰어난 많은 클래스들을 제공한다 크게 3가지 그룹이 있는데 List, Set, Map이다. 계층도와 같이 Map인터페이

staticclass.tistory.com


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]

🔝

댓글