BE/JAVA

[JAVA] ArrayList 클래스 기본 및 활용

coding_jelly 2021. 1. 1. 23:09

인트로

안녕하세요 :) 

오늘은 자바의 Collection 프레임워크의 List인터페이스 중 하나인 ArrayList클래스의 기본 및 활용에 대해 정리하였습니다. 

목차
1. ArrayList
2. ArrayList 주요 메서드
2-1) ArrayList 선언
2-2) 원소 추가
2-3) 원소 삭제
2-4) 원소 변경
2-5) 원소 참조 및 검색
2-6) 리스트 크기 및 비어있는지 확인

 

1. ArrayList

ArrayList 클래스 Collection 프레임워크의 List인터페이스의 제너릭 클래스를 배열 형태로 관리할 수 있도록 하는 클래스로

순차적으로 자료를 저장하여 관리하는 프로그램을 구현할 때 사용되는 클래스입니다.

 

ArrayList의 주요 메서드

리스트 선언, 원소 추가, 원소 삭제, 원소 변경,  원소 참조 및 검색,  리스트 크기 및 비어있는지 확인

 

1.  ArrayList 선언하기

먼저 ArrayList를 사용하려면 import java.util.ArrayList 를 선언해주어야 합니다.  

import java.util.ArrayList

ArrayList<객체 타입> 이름 = new ArrayList<>();와 같은 형태로 선언합니다. 

ArrayList arrlist = new ArrayList(); //type없는 list
ArrayList<String> str_arrlist = new ArrayList<String>(); //string
ArrayList<Integer> int_arrlist = new ArrayList<Integer>(); //integer
ArrayList<Animal> class_arrlist = new ArrayList<Animal>(); //class Animal 

 

2.  원소 추가하기

2-1) ArrayList 맨 끝에 원소를 추가하기

ArrrayList의 add(value) 메소드를 통해 데이터를 추가합니다. 인덱스를 생략하는 경우 맨 끝에 데이터가 추가됩니다.  

* ArrayList는 특정 용량을 벗어나 데이터를 추가하는 경우 저장 용량이 늘어나며 데이터가 삽입됩니다. 

메서드

boolean add(E e)

사용 형태 및 예시

ArrayList<String> arrlist = new ArrayList<String>(); //string
arrlist.add("abc");

 

2-2) ArrayList 중간에 원소를 추가하기

ArrayList 중간에 원소를 삽입하고 싶은 경우 인덱스를 인수로 추가합니다.

이 경우 해당 인덱스에 데이터가 추가되고 인덱스 뒤의 원소들은 뒤로 1씩 밀려납니다. 

사용형태 및 예시

ArrayList<String> arrlist = new ArrayList<String>(); //string
arrlist.add(2,"abcd");

 

3.  원소 삭제하기

3-1) 특정 인덱스 원소를 삭제하기 

ArrayList의 remove(index) 메서드를 통해 해당 인덱스의 데이터를 삭제합니다. 

해당 인덱스의 데이터를 삭제하는 경우 인덱스 뒤의 원소들이 앞으로 1씩 당겨집니다. 

arrlist.remove(1); 의 경우 파라미터는 arrlist에서의 위치, 즉 인덱스이므로 1번째 인덱스의 데이터가 삭제됩니다.

메서드

boolean remove(Object o)

사용 형태 및 예시

arrlist.remove(int index);

//example
ArrayList<String> arrlist = new ArrayList<String>(); //string
arrlist.add("ab");
arrlist.add("abc");
arrlist.add("abcd");
arrlist.remove(1); //abc remove

 

3-2) 전체 Arraylist를 삭제하기 

ArrayList의 전체 데이터를 삭제하는 방법 clear() 메서드가 있습니다.

이 경우 arrlist의 모든 원소를 삭제하고 시간복잡도는 O(N)입니다. 

사용형태 

arrlist.clear();

 

3-3) 인자로 전달된 Collection의 원소를 삭제하기 

인자로 전달받은 Collection의 아이템들과 일치하는 객체를 리스트에서 삭제합니다.

arrlist = [10,20,30,40], removelist = [20,30] 의 데이터가 있고 arrlist.removeAll(removelist); 한 경우 

arrlist에서 removelist에 해당하는 모든 데이터를 삭제합니다.

removeAll()의 해당 파라미터(removelist)는 삭제할 데이터를 가진 리스트입니다. 

메서드

public boolean removeAll(Collection<?> c)

사용 형태 및 예시

arrlist.removeAll(removelist);

//example
ArrayList<Integer> arrlist = new ArrayList<Integer>();
arrlist.add(10);
arrlist.add(20);
arrlist.add(30);
arrlist.add(40);

ArrayList<Integer> removelist = new ArrayList<Integer>();
removelist.add(20);
removelist.add(30);

arrlist.removeAll(removelist);

//result ==> arrlist = [10,40]; 

 

4.  원소 변경하기

특정 인덱스의 리스트를 변경하고 싶은 경우 arrlist.set()메서드를 통해 변경합니다. 

arrlist.set(1,200); 의 경우 첫번째 파라미터는 arrlist의 위치, 즉 인덱스를 뜻하고 두번째 파라미터는 변경할 값을 의미합니다. 

메서드

public E set(int index, E element)

사용 형태 및 예시

arrlist.set(index, E e);


//example
ArrayList<Integer> arrlist = new ArrayList<Integer>(); //string
arrlist.add(10);
arrlist.add(20);
arrlist.add(30);
arrlist.set(1,200); //20 --> 200

 

5.  원소 참조 및 검색하기

5-1) 원소 참조 : get()

특정 인덱스의 데이터를 얻고 싶은 경우 arrlist.get()메서드를 통해 참조하여 얻습니다.

arrlist.get(1); 의 경우 파라미터는 arrlist의 위치, 즉 인덱스를 의미합니다. 

메서드

public E get(int index)

 

5-2) 원소 검색: indexof()

특정 데이터의 인덱스를 알고 싶은경우, indexOf(데이터)메서드를 사용합니다. 

arrlist.indexOf(10); 의 경우 파라미터는 arrlist에서 인덱스를 알고싶은 데이터를 의미합니다.

메서드

public int indexOf(Object o)

사용 형태 및 예시

int data = arrlist.get(int index);
int idx = arrlist.indexOf(data);

//example
ArrayList<Integer> arrlist = new ArrayList<Integer>(); //string
arrlist.add(10);
arrlist.add(20);
arrlist.add(30);

System.out.println(arrlist.get(0)); //0번째 인덱스 반환

for(Integer i : arrlist)
	System.out.println(i);

System.out.println(arrlist.indexOf(10)); //10이 있는 인덱스 반환 

 

6.  리스트 크기 및 비어있는지 확인

 

6-1) 리스트 크기 구하기 : size(), trimTosSize()

arrlist.size()메서드를 통해 리스트 내에 있는 원소의 개수를 리턴합니다. 

메서드

public int size() 

 

6-2) 리스트 비어있는 지 확인: isEmpty()

isEmpty() 메서드를 사용해 ArrayList에 요소가 있는지 없는 지 판단합니다.

메서드

public boolean isEmpty()

 

6-3) 리스트를 현재 사이즈로 최적화 : trimTosSize()

ArrayList 의 사이즈를 현재 리스트 사이즈에 축소해 최적화하는 함수입니다.

메서드

public void trimToSize()