List 구현체의 remove() API에 대해 알아보지
public E remove(int index)
- 리스트의 해당 인덱스에 해당하는 원소를 삭제
- 삭제한 원소를 리턴
public boolean remove(Object o)
- 리스트를 앞에서부터 순회하면서 o와 같은 원소를 탐색(equals)
- 처음 탐색된 원소를 삭제
- 삭제 성공시 true 리턴
예제 코드
List<Integer> ls = new ArrayList<>(); || new LinkedList<>();
ls.add(1);
ls.add(2);
ls.add(1);
ls.remove(0);
ls.remove(Integer.valueOf(1));
remove 시간복잡도는 O(n)
- 해당원소를 탐색하는 시간 n
- 나머지 원소를 앞쪽으로 당기는 시간 n
-> O(n+n) == O(kn) == O(n)
인덱스 삭제시 주의사항
- 리스트 원소를 인덱스로 삭제시 나머지 원소의 인덱스가 앞쪽으로 당겨짐
- 아래 코드는 리스트 원소를 모두 제거하는 코드
- 인덱스의 변화가 없음에도 모든 원소가 삭제되는 것을 확인할 수 있다.
ls.add(1);
ls.add(2);
ls.add(1);
ls.remove(0);
ls.remove(0);
ls.remove(0);