자바) ArrayList 사용법 & 예제

코딩하는 어린콩·2021년 11월 10일
0

JAVA기초

목록 보기
2/3

Arraylist는 자바에서 많이 사용되는 클래스입니다.

일반 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작합니다.

배열과의 차이점으로는 배열은 크기가 고정인 반면에 Arraylist는 크기가 가변적으로 변합니다.

내부적으로 저장 가능한 메모리 용량이 있고 현재 사용중인 공간의 크기가 있습니다.

만약 메모리 용량을 초과하면 더 큰 공간의 메모리를 새롭게 할당합니다.

1. ArrayList 생성

Arraylist를 사용할려면 아래 코드를 먼저 추가해야됩니다.

import java.util.ArrayList;

그리고 나서 Arraylist를 생성해주면됩니다. 생성 방법은 여러가지가 있습니다.

ArrayList<Integer> list1 = new ArrayList<Integer>(); // 타입 지정
ArrayList<Integer> list2 = new ArrayList<>(); // 타입 생략 가능
ArrayList<Integer> list3 = new ArrayList<>(10); // 초기 용량(Capacity) 설정
ArrayList<Integer> list4 = new ArrayList<>(integers1); // 다른 Collection값으로 초기화
ArrayList<Integer> list5 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()

ArrayList를 생성할 때 Set이나 다른 ArrayList를 전달하면 해당 Collections의 값들로 초기화됩니다.

마지막으로 가변 인자를 전달받는 Arrays.asList()를 사용하면 기본 값들로 생성 가능합니다.

2. Arraylist 요소 추가/변경

add() 메소드로 엘레멘트를 추가할 수 있습니다. 그리고 또한 set() 메소드로 기존에 추가된 값을 변경하는 것도 가능합니다.

ArrayList<String> animals = new ArrayList<>();
// add() method
animals.add("dog");
animals.add("cat");
animals.add(0, "mouse");
animals.add("bird");

// set() method
animals.set(0, "human");

System.out.println(animals);

add()는 기본적으로 리스트의 가장 끝에 값을 추가합니다.

만약 아래와 같이 인덱스를 지정하면 해당 인덱스에 값이 추가되고 그 인덱스부터의 값들이 1 칸씩 밀립니다.

animals.add(0, "mouse");

set() 메소드는 해당 되는 인덱스의 위치의 값을 바꾸는 메소드입니다.

결과는 아래와 같이 출력 됩니다.
출력

3. Arraylist 요소 삭제

값을 삭제할 때는 remove()메소드를 호출합니다.

 
String removedAnimal = animals.remove(0);
System.out.println("Removed animal is " + removedAnimal);

animals.remove("cat");
System.out.println(animals);

animals.clear();
System.out.println(animals);

삭제할 때는 엘레멘트의 인덱스를 입력하거나 엘레멘트를 직접 입력할 수 있습니다.

인덱스를 통해 삭제할 경우 삭제되는 엘레멘트를 리턴받을 수 있습니다.

값을 지움과 동시에 해당 값으로 별도의 작업이 필요한 경우 리턴을 받아서 사용하면 됩니다.

그리고 ArrayList안의 내용을 전체 삭제할 때는 clear()를 호출하면 됩니다.

아래는 결과값 입니다.

4. ArrayList 전체 값 확인

for와 get()메소드나 for-each 반복문으로 각각의 값을 순회해서 출력하는 것이 가능합니다.

또한 iterator나 listIterator를 통하여 값들을 순회 하는 것도 가능합니다.

listIterator의 경우 생성 시 ArrayList의 크기를 입력해주고 역방향으로 출력할 수 있습니다.

Iterator 나 ListIterator를 사용시에 아래코드를 import 시켜줘야 됩니다.

import java.util.Iterator;
import java.util.ListIterator;

코드 예시

Iterator<String> iterator = animals.iterator();
while (iterator.hasNext()) {
	System.out.print(iterator.next() + "  ");
}
System.out.println();

// using listIterator
ListIterator<String> listIterator = animals.listIterator(animals.size());
while (listIterator.hasPrevious()) {
	System.out.print(listIterator.previous() + "  ");
}
System.out.println();

아래는 결과값

5. Arraylist 값 존재 유무 확인

ArrayList안에 특정한 값이 존재하는 지 알고 싶은 경우 contains()를 사용하면 됩니다.

그리고 값이 존재할 때 어느 위치에 존재하는 지 알고 싶은 경우 indexOf()를 사용할 수 있습니다.

아래는 예시 코드

boolean contains = animals.contains("dog");
System.out.println(contains);

int index = animals.indexOf("dog");
System.out.println(index);

index = animals.indexOf("nothing");
System.out.println(index);

contains()는 값이 있는 경우 true를, 값이 없는 경우 false를 리턴합니다.

indexOf()는 값이 존재하는 경우 해당 엘레멘트의 인덱스를 리턴합니다.

만약 값이 존재하지 않을 경우 -1을 리턴하기 때문에 별도로 처리가 가능합니다.

아래는 결과값 입니다.

0개의 댓글