java中List去重合并

在日常开发中我们往往会遇到这样的需求,就是有两个List需要我们去重并合并,那么我们来研究一下基础类型List的这种操作应该如何实现。有很多种方法我们来研究一下。

比如说我们要处理如下两个列表的合并

List listA = new ArrayList();
listA.add("a");
listA.add("b");
listA.add("c");
listA.add("d");

List listB = new ArrayList();
listB.add("a");
listB.add("f");
listB.add("g");
listB.add("i");

1. 第一种方式使用List的基本api来操作

public static void sortListTwo(List listA, List listB) {
    listA.removeAll(listB);
    listA.addAll(listB);
    for (String str : listA) {
        System.out.println(str);
    }
}

这种方式我感觉适合小体量的数据操作,如果数据量太大性能很低,感觉底层是底层遍历实现,所以大体量数据不推荐试着用这种方式。

2. 第二种方式就是使用set的方式实现,set本身就不能存在重复的数据

public static void sortListOne(List listA, List listB) {
    Set set = new HashSet();
    set.addAll(listA);
    set.addAll(listB);
    List listC = new ArrayList(set);
}

3. 第三种方式是使用Map方式进行key唯一去重

public static void sortListFree(List listA, List listB) {
        Map map = new HashMap();
        for (String str : listA) {
            map.put(str, str);
        }
        for (String str : listB) {
            map.put(str, str);
        }
    
    }

如果我自己使用的话我偏向于第二种和第三种方式,如果第一种方式不太理解的话可以自己写个例子试试就明白了。

说点什么

avatar
  Subscribe  
提醒