java.util.List
上对 containsAll()
的调用。
此方法调用的时间复杂度为 O(n·m),其中 n 是调用该方法的列表中的元素数,m 是作为形参传递给该方法的集合中的元素数。 当列表很大时,这可能是一项开销巨大的操作。
该快速修复会将列表包装在 new java.util.HashSet<>()
中,因为从 java.util.List
创建
java.util.HashSet
并在 java.util.HashSet
上执行 containsAll()
的所需时间为 O(n+m)。
示例:
public boolean check(List<String> list, Collection<String> collection) {
// O(n·m) 复杂度
return list.containsAll(collection);
}
在应用快速修复后:
public boolean check(List<String> list, Collection<String> collection) {
// O(n+m) 复杂度
return new HashSet<>(list).containsAll(collection);
}
2022.1 最新变化