[Java] List 특정 값 삭제

이대건·2024년 1월 31일

Java

목록 보기
5/17
post-thumbnail

List 구현체의 remove() API에 대해 알아보지

public E remove(int index)

  1. 리스트의 해당 인덱스에 해당하는 원소를 삭제
  2. 삭제한 원소를 리턴

public boolean remove(Object o)

  1. 리스트를 앞에서부터 순회하면서 o와 같은 원소를 탐색(equals)
  2. 처음 탐색된 원소를 삭제
  3. 삭제 성공시 true 리턴

예제 코드

List<Integer> ls = new ArrayList<>(); || new LinkedList<>();
ls.add(1);
ls.add(2);
ls.add(1);
// 만약 값이 1인 원소를 삭제하고싶을때
// 1. 인덱스로 삭제
ls.remove(0);
// 2. 값으로 삭제
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);
profile
일낸머스크

0개의 댓글