报告对包含 java.util.List 参数的 java.util.Set.removeAll() 的调用。

当参数大小大于或等于集合大小,并且集合是 java.util.AbstractSet 的子类时,这样的调用可能会很慢。 在本例中,对集合中的每个元素调用了 List.contains(),将执行线性搜索。

示例:

  public void check(String... ss) {
    // 可能的 O(n^2) 复杂度
    mySet.removeAll(List.of(ss));
  }

在应用快速修复后:

  public void check(String... ss) {
    // O(n) 复杂度
    List.of(ss).forEach(mySet::remove);
  }

2020.3 的新功能