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 最新变化