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 |
---|