본문 바로가기
메모 log (간단메모)/knowledge

ArrayList remove 주의사항

by abbear25 2024. 2. 20.

 Java로 개발이나 알고리즘 문제를 풀다보면

아래와 같이 ArrayList로 정보를 저장하고 이를 제거하는 경우가 있습니다.

 

문자열인 경우는 신경쓸 필요가 없지만 숫자 일 때는 주의할 부분이 있는데요.

바로 remove() 함수가 2개가 있다는 것입니다.

 

 

1) remove 함수에 int형을 변수로 넣어주면

아래와 같이 배열의 해당 index에 값을 제거해줍니다.

public E remove(int index) {
        Objects.checkIndex(index, size);
        final Object[] es = elementData;

        @SuppressWarnings("unchecked") E oldValue = (E) es[index];
        fastRemove(es, index);

        return oldValue;
    }

 

 

2) 하지만 Object형을 변수로 넣어주면

해당 값과 일치하는 가장 처음에 나오는 값을 제거해줍니다.

public boolean remove(Object o) {
    final Object[] es = elementData;
    final int size = this.size;
    int i = 0;
    found: {
        if (o == null) {
            for (; i < size; i++)
                if (es[i] == null)
                    break found;
        } else {
            for (; i < size; i++)
                if (o.equals(es[i]))
                    break found;
        }
        return false;
    }
    fastRemove(es, i);
    return true;
}

 

 

따라서 특정 숫자 값을 제거해주려면

아래와 같이 Wapper 클래스인 Integer로 변환하여 변수로 넣어줘야 합니다.

ArrayList<Integer> nList = new ArrayList<>();
nList.add(1); //index 0
nList.add(5); //index 1
nList.add(2); //index 2
nList.add(4); //index 3
nList.add(3); //index 4
nList.add(6); //index 5


int n = 3;
/*index 4에 저장된 값이 숫자 3과 일치하므로 해당 값 삭제*/
nList.remove(Integer.valueOf(n));

/*index 3에 해당하는 숫자 4 값 삭제*/
nList.remove(n)

 

반응형

'메모 log (간단메모) > knowledge' 카테고리의 다른 글

라이브러리와 프레임워크 차이  (0) 2024.02.25