Java/컬렉션

[Java]ArrayList 모두 삭제 clear(), removeAll()

DevStory 2022. 5. 27.

이번 포스팅은 ArrayList 객체의 모든 요소를 제거하는 방법을 소개합니다.


ArrayList.clear()

다음 예제는 clear() 메서드를 호출하여 ArrayList 객체의 모든 요소를 제거합니다.

ArrayList<String> li = new ArrayList<>();
li.add("A");
li.add("B");
li.add("C");

// clear() 호출 전
System.out.println(li);

// clear() 호출
li.clear();

// clear() 호출 후
System.out.println(li);

실행 결과

[A, B, C]
[]

ArrayList.removeAll()

다음 예제는 removeAll() 메서드를 호출하여 ArrayList 객체의 모든 요소를 제거합니다.

ArrayList<String> li = new ArrayList<>();
li.add("A");
li.add("B");
li.add("C");

// removeAll() 호출 전
System.out.println(li);

// removeAll() 호출
li.clear();

// removeAll() 호출 후
System.out.println(li);

실행 결과

[A, B, C]
[]

removeAll() 메서드는 인자로 전달된 Collection 객체의 요소와 일치하는 요소를 제거합니다. 따라서 removeAll() 메서드의 인자로 자기 자신을 전달합니다.


clear() 메서드와 removeAll() 메서드의 차이점

위 예제에서 알 수 있듯이 두 메서드 모두 ArrayList 객체의 모든 요소를 제거합니다. 그러나 clear() 메서드와 removeAll()은 다르게 동작합니다. 따라서 두 메서드의 차이점을 이해할 필요가 있습니다.

 

clear() 메서드의 목적은 리스트에서 모든 요소를 제거하는 것입니다. 따라서 clear() 메서드를 호출하면 모든 요소가 제거됩니다.

 

removeAll() 메서드는 clear() 메서드와 달리 Collection 타입의 인수가 존재합니다. removeAll() 메서드의 목적은 removeAll() 메서드를 호출한 컬렉션 객체와 인자로 전달된 컬렉션 객체와 일치하는 요소를 제거하는 것입니다.

 

removeAll() 메서드는 호출한 컬렉션 객체와 인자로 전달된 컬렉션 객체의 값을 비교해야 하므로 clear() 메서드에 비해 느리게 동작합니다. 


정리

  • clear() 메서드와 removeAll() 메서드로 ArrayList 객체의 모든 요소를 제거할 수 있습니다.
  • removeAll() 메서드는 컬렉션 타입의 인수를 가집니다.
  • clear() 메서드는 removeAll() 메서드보다 빠릅니다.

 

반응형

댓글