您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

2021-09-17

List求交集,差集,并集,去重并集

 * 交集	listA.retainAll(listB)	listA内容变为listA和listB都存在的对象
 * 差集	listA.removeAll(listB)	listA内容变为listA存在而listB不存在的对象
 * 并集	listA.addAll(listB)	listA内容变为listA和listB合并的对象
 * 去重并集	listA.removeAll(listB),listA.addAll(listB)	为了去重,listA先取差集,然后追加全部的listB

本来正好用到list求差集,正好整理一下其他常用的方法。

package com.company.main;

import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;

public class Test {

    /**
     * 交集	listA.retainAll(listB)	listA内容变为listA和listB都存在的对象
     * 差集	listA.removeAll(listB)	listA内容变为listA存在而listB不存在的对象
     * 并集	listA.addAll(listB)	listA内容变为listA和listB合并的对象
     * 去重并集	listA.removeAll(listB),listA.addAll(listB)	为了去重,listA先取差集,然后追加全部的listB
     */
    public static void main(final String[] args) throws ExecutionException, InterruptedException {

        // 差集
        List<String> list3 = new ArrayList<String>();
        List<String> list4 = new ArrayList<String>();
        list3.add("one");
        list3.add("two");
        list4.add("two");
        list4.add("three");
//        list3.removeAll(list4);
//        System.out.println(list3); // 结果:[one]

        //第二种求差
//        List distinctByUniqueList = list3.stream()
//                .filter(item -> !list4.stream().collect(Collectors.toList()).contains(item)).collect(Collectors.toList());
//        System.out.println(distinctByUniqueList); // 结果:[one]

        //第三种求差(效率最快)空间换时间,利用hashmap的key唯一
        HashMap<String, Boolean> map = new HashMap();
        List distinctByUniqueList = new ArrayList<>();
        for (int i = 0; i < list4.size(); i++) {
            map.put(list4.get(i), true);
        }
        for (int i = 0; i < list3.size(); i++) {
            String x = list3.get(i);
            if (!map.containsKey(x)) {
                distinctByUniqueList.add(x);
            }
        }
        System.out.println(distinctByUniqueList); // 结果:[one]

        // 并集
        List<String> list5 = new ArrayList<String>();
        List<String> list6 = new ArrayList<String>();
        list5.add("1");
        list5.add("2");
        list6.add("3");
        list6.add("2");
        list5.addAll(list6);
        System.out.println(list5); // 结果:[1, 2, 3, 2]

        // 去重并集
        List<String> list7 = new ArrayList<String>();
        list7.add("1");
        list7.add("2");
        List<String> list8 = new ArrayList<String>();
        list8.add("2");
        list8.add("3");
        list7.removeAll(list8);
        list7.addAll(list8);
        System.out.println(list7); // 结果:[1, 2, 3]
        //去重元素
        list7.add("2");
        List unique = list7.stream().distinct().collect(Collectors.toList());
        System.out.println(unique); // 结果:[1, 2, 3]


        // 交集
        List<String> list1 = new ArrayList<String>();
        List<String> list2 = new ArrayList<String>();
        list1.add("one");
        list1.add("two");
        list2.add("two");
        list2.add("three");

        list1.retainAll(list2);
        System.out.println(list1); // 结果:[two]

    }


    /**
     * 字符串拼接
     * @throws Throwable
     */
    protected void appendJson() throws Throwable {
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(" {\"beg\":1");
        String[] a = {"count", "get", "set"};
        HashMap hashMap = new HashMap();
        hashMap.put("set", 1);
        hashMap.put("count", 2);
        hashMap.put("one", 3);
        ArrayList<String> arrayList = new ArrayList();
        Collections.addAll(arrayList, a);
        arrayList.forEach(x -> {
            if (hashMap.get(x) != null) {
                stringBuffer.append(",\"" + x + "\":").append("\"").append(hashMap.get(x)).append("\"");
            }
        });
        stringBuffer.append("}");
        System.out.println(stringBuffer);
    }
}

分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进