java 怎么把多个list 合并成一个去掉重复的

如题所述

示例代码:


    public static void main(String[] args){
        List<Integer> list1 = new ArrayList<Integer>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        list1.add(4);
        List<Integer> list2 = new ArrayList<Integer>();
        list2.add(1);
        list2.add(4);
        list2.add(7);
        list2.add(10);
        List<Integer> listAll = new ArrayList<Integer>();
        listAll.addAll(list1);
        listAll.addAll(list2);
        listAll = new ArrayList<Integer>(new LinkedHashSet<>(listAll));
        System.out.println(listAll);
    }


输出:


[1, 2, 3, 4, 7, 10]


代码要典:


    合并 使用java.util.List.addAll(Collection<? extends Integer>)

    去重,借助LinkedHashSet 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-05

下面的例子讲了如何合并两个java list, 用简单的方法,而不用自己去造轮子,循环list 去做,用如下建档方法:

import java.util.ArrayList;import java.util.List;public class JoinList {    

public static void main(String[] args) {         

List<String> listA = new ArrayList<String>();        listA.add("A");

List<String> listB = new ArrayList<String>();        listB.add("B");

List<String> listFinal = new ArrayList<String>

();        listFinal.addAll(listA);        listFinal.addAll(listB);

//same result        //List<String> listFinal = new ArrayList<String>

(listA);        //listFinal.addAll(listB);

System.out.println("listA : " + listA);        System.out.println("listB : " + listB);        System.out.println("listFinal : " + listFinal);

}}

你可以看到结果如下:
listA : [A]listB : [B]listFinal : [A, B]

其实最关键的就是调用 list 的 addall 方法,apache 的 listUtil  , 里面有个 union 方法,其实也是用的 addall 方法。

本回答被网友采纳
相似回答