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 的新功能