java.util.List 引数を持つ java.util.Set.removeAll() の呼び出しを報告します。

引数のサイズがセットのサイズ以上、かつセットが java.util.AbstractSet のサブクラスである場合、このような呼び出しの処理速度は低下する可能性があります。 このような場合はセットの各要素に対して List.contains() が呼び出され、線形探索が実行されます。

例:


  public void check(String... ss) {
    // possible O(n^2) complexity
    mySet.removeAll(List.of(ss));
  }

クイックフィックス適用後:


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

2020.3 の新機能です