Java
Call to 'set.removeAll(list)' may work slowly
Warning
New
Last modified: 03 December 2024 Reports calls to 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);
}
- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
SlowAbstractSetRemoveAll
New in 2020.3
Inspection Details | |
---|---|
By default bundled with: | |
Can be installed with plugin: | Java, 243.23126 |
Thanks for your feedback!
Was this page helpful?