Java에서 ArrayList 클래스의 add() 메서드를 사용하면 리스트에 새로운 요소를 손쉽게 추가할 수 있습니다. 이 메서드는 용도에 따라 두 가지 형태로 오버로딩되어 제공됩니다.
- add(E e) − 객체(요소)를 매개변수로 받아 리스트의 맨 끝에 추가합니다.
- public void add(int index, E element) − 추가할 요소와 함께 삽입할 위치를 나타내는 정수 값(인덱스)을 받아, 리스트의 지정된 위치에 요소를 삽입합니다. 이때 해당 위치에 이미 존재하던 요소와 그 이후의 요소들은 자동으로 오른쪽으로 한 칸씩 밀려나며, 각 요소의 인덱스가 1씩 증가합니다.
즉, 인덱스 값을 함께 받는 add() 메서드를 활용하면 원하는 위치에 정확히 요소를 삽입할 수 있습니다.
예제 코드
다음 예제에서는 여러 문자열 요소로 구성된 ArrayList를 만든 뒤, add(6, "Hadoop")을 호출하여 6번째 위치(인덱스 6)에 새로운 요소를 삽입하고, 삽입 전후의 리스트 내용을 비교해 확인합니다.
import java.util.ArrayList;
import java.util.Iterator;
public class OccurenceOfElements {
public static void main(String args[]) {
ArrayList <String> list = new ArrayList<String>();
//ArrayList 객체 생성 및 요소 추가
list.add("JavaFX");
list.add("Java");
list.add("WebGL");
list.add("OpenCV");
list.add("OpenNLP");
list.add("JOGL");
list.add("Hadoop");
list.add("HBase");
list.add("Flume");
list.add("Mahout");
list.add("Impala");
System.out.println("Contents of the array list (first to last): ");
Iterator<String> it = list.iterator();
while(it.hasNext()) {
System.out.print(it.next()+", ");
}
//인덱스 6 위치에 요소 삽입
list.add(6, "Hadoop");
it = list.iterator();
System.out.println();
System.out.println("Contents of the array list after inserting new element: ");
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
}
}실행 결과
Contents of the array list (first to last): JavaFX, Java, WebGL, OpenCV, OpenNLP, JOGL, Hadoop, HBase, Flume, Mahout, Impala, Contents of the array list after inserting new element: JavaFX Java WebGL OpenCV OpenNLP JOGL Hadoop Hadoop HBase Flume Mahout Impala
주요 포인트 정리
- 리스트의 크기 범위를 벗어난 인덱스를 지정하면 IndexOutOfBoundsException이 발생하므로 주의해야 합니다.
- 중간 위치에 요소를 삽입하면 이후 요소들이 모두 이동하기 때문에, 빈번한 삽입 작업이 필요하다면 성능 영향을 고려하는 것이 좋습니다.