ArrayList
는 자바의 컬렉션 프레임워크 중 하나로, 크기가 동적으로 조정되는 배열이다. ArrayList
는 java.util
패키지에 포함되어 있으며, 요소를 추가하거나 제거할 때 자동으로 크기가 조절된다.
동적 크기 조절: ArrayList
는 요소를 추가하거나 제거할 때 자동으로 크기가 조절된다. 따라서 배열처럼 크기를 미리 지정할 필요가 없다.
유연한 사용: ArrayList
는 요소의 삽입, 삭제, 검색이 용이하다. 인덱스를 사용하여 특정 요소에 접근할 수 있으며, 컬렉션 프레임워크의 다양한 메서드를 사용할 수 있다.
성능:
add(E e): 요소를 리스트의 끝에 추가한다.
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
add(int index, E element): 지정한 위치에 요소를 삽입한다.
list.add(1, "Cherry"); // Banana 앞에 Cherry를 삽입
get(int index): 지정한 위치의 요소를 반환한다.
String fruit = list.get(1); // Cherry를 반환
remove(int index): 지정한 위치의 요소를 제거한다.
list.remove(1); // Cherry를 제거
size(): 리스트의 크기를 반환한다.
int size = list.size(); // 리스트의 크기를 반환
clear(): 리스트의 모든 요소를 제거한다.
list.clear(); // 리스트를 비운다
다음은 ArrayList
를 사용하여 나누어 떨어지는 숫자 배열 문제를 해결하는 예제 코드이다.
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> tempList = new ArrayList<>();
for (int value : arr) {
if (value % divisor == 0) {
tempList.add(value);
}
}
if (tempList.isEmpty()) {
return new int[]{-1};
}
Collections.sort(tempList);
// ArrayList를 배열로 변환
int[] answer = new int[tempList.size()];
for (int i = 0; i < tempList.size(); i++) {
answer[i] = tempList.get(i);
}
return answer;
}
}
ArrayList 초기화:
ArrayList<Integer> tempList = new ArrayList<>();
ArrayList
를 초기화하여 나누어 떨어지는 숫자를 저장할 리스트를 생성한다.값 추가:
for (int value : arr) {
if (value % divisor == 0) {
tempList.add(value);
}
}
divisor
로 나누어 떨어지는 값을 tempList
에 추가한다.예외 처리:
if (tempList.isEmpty()) {
return new int[]{-1};
}
-1
이 포함된 배열을 반환한다.정렬:
Collections.sort(tempList);
ArrayList
를 오름차순으로 정렬한다.배열로 변환:
int[] answer = new int[tempList.size()];
for (int i = 0; i < tempList.size(); i++) {
answer[i] = tempList.get(i);
}
ArrayList
를 배열로 변환하여 반환한다.특히 내가 잘못 알았던 것은 ArrayList가 배열이 아님에도 불구하고 배열처럼 사용하려 했다는 것이다. ArrayList는 내부적으로 배열을 사용하지만, 크기가 동적으로 조정되고 다양한 메서드를 통해 유연하게 요소를 추가, 삭제, 접근할 수 있다.