ArrayList的交集,差集,并集,去重并集

//创建两个ArrayList并添加元素
        List list1 = new ArrayList();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        list1.add(4);

        List list2 = new ArrayList();
        list2.add(3);
        list2.add(4);
        list2.add(5);
        list2.add(6);

判断交集:

  list2.retainAll(list1);
        if(list1.size()>0){
            System.out.println("存在交集");
        }

retainAll()方法通过检测list1的大小,大小改变返回true(没有交集返回true),大小不变返回false(两集合相同返回false)。不能通过true或false确定是否存在交集,只能通过list1.seze()判断。

输出交集:可以通过双重for循环把相同结果输出;下面使用了set去重。

        //用set去重特点求交集
        HashSet hashSet=new HashSet();
        //list3储存交集
        List list3 = new ArrayList();
        for (Integer i:list1
             ) {
            hashSet.add(i);
        }
        for (Integer i:list2
                ) {
            if(hashSet.add(i)==false){//add失败则认为有相同元素,存放到list3
                list3.add(i);
            }
        }
        System.out.println(list3);

差集:

        // 差集,属于list1而不属于list2
        list1.removeAll(list2);
        System.out.println("差集:"+list1);

并集:

        // 并集
        list1.addAll(list2);
        System.out.println("并集:"+list1);

去重并集:

        // 无重复并集
        list2.removeAll(list1);
        list1.addAll(list2);
        for (Integer i : list1) {
            System.out.println(i);
        }

你可能感兴趣的:(java)