데이터 추가하기 - 중간 위치에 추가하기

데이터를 중간에 추가할 때는 고려할 점이 많습니다. 데이터를 추가할 공간을 확보해야 하기 때문입니다. 전체 코드를 봅시다.

public boolean add(int index, Object element) {
    // 엘리먼트 중간에 데이터를 추가하기 위해서는 끝의 엘리먼트부터 index의 노드까지 뒤로 한 칸씩 이동시켜야 합니다.
    for (int i = size - 1; i >= index; i--) {
        elementData[i + 1] = elementData[i];
    }
    // index에 노드를 추가합니다.
    elementData[index] = element;
    // 엘리먼트의 숫자를 1 증가시킵니다.
    size++;
    return true;
}

엘리먼트의 이동을 코드로 표현하긴 쉽지 않습니다. 아래 그림을 봅시다.

img

그림에 표시된 숫자 순으로 엘리먼트를 왼쪽에서 오른쪽으로 옮겨야 합니다. 반복조건을 헷갈리지 않는 게 중요합니다. 반복문을 만들 때는 시작과 끝을 잘 파악하세요.

  • 시작 : 반복작업이 시작되는 인덱스로 이 값은 size-1로 구할 수 있습니다.
  • 끝 : 반복작업이 끝나는 엘리먼트의 인덱스는 메소드 add의 첫 번째 인자의 값을 사용하면 됩니다.
  • 반복작업 : 감소 연산 i--

이렇게 엘리먼트를 한 칸씩 뒤로 이동시킨 후 빈자리에 엘리먼트를 삽입합니다.

img

elementData[index] = element;

엘리먼트를 추가했으니 size를 1 증가하세요.

size++;

지금까지 엘리먼트를 추가하는 방법에 대해서 알아봤습니다.

//Main.java
ArrayList numbers = new ArrayList();
numbers.addLast(10);
numbers.addLast(20);
numbers.addLast(30);
numbers.addLast(40);
numbers.add(1, 15);