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