[JAVA] ArrayList에 저장된 객체의 삭제
ArrayList에 저장된 첫번째 객체부터 삭제하는 경우
- ArrayList의 요소를 삭제하는 경우, 삭제할 객체의 바로 아래에 있는 데이터를 한 칸씩 위로 복사해서 삭제할 객체를 덮어쓰는 방식으로 처리한다.
- ArrayList에 저장된 첫번째 객체부터 삭제하는 경우, 배열 복사가 발생한다.
for (int i = 0; i <= list.size(); i++) {
list.remove(i);
}
- 위와 같은 코드로 삭제 시, i번째 인덱스에 해당하는 값을 삭제하고 그 아래에 남아있는 객체들은 위로 올라가게 된다.
- 데이터의 이동이 발생한다. (배열 복사)
- 즉 아래 사진과 같이 모든 객체가 삭제되지 않고 남아 있다.
ArrayList에 저장된 마지막 객체부터 삭제하는 경우
- 마지막 객체부터 삭제하는 경우 배열 복사가 발생하지 않는다.
- list.size()는 현재 5이므로, 인덱스 번호에 맞게 -1을 해 준다.
- i는 4부터 시작되어 모든 객체를 다 삭제할 수 있다.
- 데이터의 이동이 없기 때문에 작업 시간이 짧다.
for (int i = list.size() - 1; i >= 0; i--) {
list.remove(i);
}
참고: 자바의 정석