java.util.List에서 containsAll()에 대한 호출을 보고합니다.

이 메서드 호출의 시간복잡도는 O(n·m)입니다. 여기서 n은 메서드가 호출되는 목록에 있는 요소의 개수이며, m은 메서드에 매개변수로 전달되는 컬렉션 내 요소의 개수입니다. 목록이 클 때 이는 소모가 매우 큰 작업이 될 수 있습니다.

java.util.List에서 java.util.HashSet을 생성하고 java.util.HashSet 에서 containsAll()을 실행하는 데 필요한 시간이 O(n+m)이므로 빠른 수정에서는 목록을 new java.util.HashSet<>()으로 래핑합니다.

예:

  public boolean check(List<String> list, Collection<String> collection) {
    // O(n·m) 복잡도
    return list.containsAll(collection);
  }

빠른 수정을 적용한 후:

  public boolean check(List<String> list, Collection<String> collection) {
    // O(n+m) 복잡도
    return new HashSet<>(list).containsAll(collection);
  }

2022.1의 새로운 기능