java.util.Set.removeAll()
with a java.util.List
argument.
Such a call can be slow when the size of the argument is greater than or equal to the size of the set,
and the set is a subclass of java.util.AbstractSet
.
In this case, List.contains()
is called for each element in the set, which will perform a linear search.
Example:
public void check(String... ss) {
// possible O(n^2) complexity
mySet.removeAll(List.of(ss));
}
After the quick fix is applied:
public void check(String... ss) {
// O(n) complexity
List.of(ss).forEach(mySet::remove);
}
New in 2020.3