欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

比对两个集合的差异,并返回差异数据(集合)-可以是对象与基本类型

程序员文章站 2022-04-15 13:37:49
...

用map性能高些

private <T> List<T> getNewList(List<T> allList, List<T> existList) {

    Map<T, Integer> map = new HashMap<>(16);
    for (int i = 0; i < allList.size(); i++) {
      map.put(allList.get(i), i);
    }

    for (int i = 0; i < existList.size(); i++) {
      Integer pos = map.get(existList.get(i));
      if (pos == null) {
        continue;
      }
      allList.set(pos, null);
    }

    for (int i = allList.size() - 1; i >= 0; i--) {
      if (allList.get(i) == null) {
        allList.remove(i);
      }
    }
    return allList;
  }