首页 > 编程语言 >JAVA——两个List集合求交集、并集和差集(去重)

JAVA——两个List集合求交集、并集和差集(去重)

时间:2023-09-20 17:12:09浏览次数:36  
标签:并集 ArrayList List 差集 stringList3 split new stringList

https://juejin.cn/post/6899000526613151752

@Test
public void splitGetPositionOne2() throws Exception {
    List<String> stringList = new ArrayList<>();
    stringList.add("a");
    stringList.add("b");
    stringList.add("c");
    stringList.add("i");
    stringList.add("j");
    stringList.add("a");

    //一、求交集
    //方法1:直接通过retainAll直接过滤
    List<String> stringList1 =  new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(",")));
    stringList1.retainAll(stringList);
    System.out.println("交集1: " + stringList1);

    //方法2:通过过滤掉存在于stringList的数据
    List<String> stringList1_2 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(",")));
    List<String> strings = stringList1_2.stream()
            .filter(item -> stringList.contains(item))
            .collect(Collectors.toList());
    System.out.println("交集2:" + strings);

    //二、并集
    //有重并集
    List<String> stringList2 =  new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(",")));
    stringList2.addAll(stringList);
    System.out.println("并集: " + stringList2);

    //无重并集
    List<String> stringList2_2 =  new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(",")));
    List<String> stringList_1 =  new ArrayList<>(Arrays.asList("a,b,c,i,j,a".split(",")));
    stringList2_2.removeAll(stringList_1);
    stringList_1.addAll(stringList2_2);

    System.out.println("无重并集: " + stringList_1);

    //三、求差集
    //方法1:直接使用removeAll()方法
    List<String> stringList3 =  new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(",")));
    stringList3.removeAll(stringList);
    System.out.println("差集1: " + stringList3);

    //方法2:通过过滤掉不存在于stringList的数据,然后和本数组进行交集处理
    List<String> stringList3_2 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(",")));
    stringList3_2.retainAll(stringList3_2.stream()
            .filter(item -> !stringList.contains(item))
            .collect(Collectors.toList()));
    System.out.println("差集2:" + stringList3_2);

    



}
  public static void main(String[] args) { List<String> stringList = new ArrayList<>(); stringList.add("a"); stringList.add("b"); stringList.add("c"); stringList.add("i"); stringList.add("j"); stringList.add("a"); //一、求交集 //方法1:直接通过retainAll直接过滤 List<String> stringList1 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); stringList1.retainAll(stringList); System.out.println("交集1: " + stringList1); //方法2:通过过滤掉存在于stringList的数据 List<String> stringList1_2 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); List<String> strings = stringList1_2.stream() .filter(item -> stringList.contains(item)) .collect(toList()); System.out.println("交集2:" + strings); //二、并集 //有重并集 List<String> stringList2 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); stringList2.addAll(stringList); System.out.println("并集: " + stringList2); //无重并集 List<String> stringList2_2 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); List<String> stringList_1 = new ArrayList<>(Arrays.asList("a,b,c,i,j,a".split(","))); stringList2_2.removeAll(stringList_1); stringList_1.addAll(stringList2_2); System.out.println("无重并集: " + stringList_1); //三、求差集 //方法1:直接使用removeAll()方法 List<String> stringList3 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); stringList3.removeAll(stringList); System.out.println("差集1: " + stringList3); //方法2:通过过滤掉不存在于stringList的数据,然后和本数组进行交集处理 List<String> stringList3_2 = new ArrayList<>(Arrays.asList("a,b,c,d,e,f,g,h".split(","))); stringList3_2.retainAll(stringList3_2.stream() .filter(item -> !stringList.contains(item)) .collect(toList())); System.out.println("差集2:" + stringList3_2); SpringApplication.run(DemoApplication.class, args); }
作者:Andya
链接:https://juejin.cn/post/6899000526613151752
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:并集,ArrayList,List,差集,stringList3,split,new,stringList
From: https://www.cnblogs.com/csjoz/p/17717813.html

相关文章

  • Signature|privileged permissions not in privapp-permissions whitelist异常处理
    1、问题背景及现象背景说明:软件系统:Android10需求处理:SystemUI添加截屏录屏功能问题现象:添加完修改后无法开机SystemUI/AndroidManifest.xml部分修改如下:<!--ScreenRecording--><uses-permissionandroid:name="android.permission.FOREGROUND_SERVICE"/><uses......
  • Java List和Array之间的转换
    一.Array转为List1.实现方法:java中数组转list使用Arrays.asList(T...a)方法。1.publicclassArray2List{2.publicstaticvoidmain(String[]args){3.listA=Arrays.asList("dog","cat","cow");4.String[]strs={"dog",&qu......
  • 循环删除 List 中的元素
    一、背景一个需求的技术点,需要循环删除List中的元素二、实现怎么删除List中姓李的人?publicList<String>initList=Arrays.asList("张三","李四","周一","刘四","李强","李白");1、普通for循环删除(不可靠)点击查看代码@Testpublicvoidremove1()......
  • List 去重的 6 种方法
    一、HashSet去重我们知道HashSet天生具备“去重”的特性,那我们只需要将List集合转换成HashSet集合就可以了,实现代码如下:点击查看代码publicclassListDistinctExample{publicstaticvoidmain(String[]args){List<Integer>list=newArrayList<Int......
  • Java8中遍历Map、Map转List、List转Map
    1.遍历MapMap<Integer,String>map=newHashMap<>();map.put(1,"a");map.put(2,"b");map.put(3,"c");//Map.keySet遍历for(Integerk:map.keySet()){ System.out.println(k+"==>"+map.get(k));......
  • listview排序
    intWINAPICustomSortProc(LPARAMItem1,LPARAMItem2,LPARAMParamSort){staticboolb=true;if(b){b=false;return-CompareText(((TListItem*)Item1)->Caption,((TListItem*)Item2)->Caption);}......
  • 自定义注解@ValidValueList
    1、自定义注解@ValidValueList和验证器ValidValueListValidator来确保集合中的元素必须是在指定的值列表中。2、注解@ValidValueList允许你在字段或参数上标记一个集合,并为其提供一组有效的值。验证器ValidValueListValidator则用于检查集合中的元素是否都在指定的值列表......
  • List,Set,Map三者的区别,Java 创建对象有几种方式
    一、List,Set,Map三者的区别List(对付顺序的好帮手):List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象Set(注重独一无二的性质):不允许重复的集合。不会有多个元素引用相同的对象。Map(用Key来搜索的专家):使用键值对存储。Map会维护与Key有关联的值。两个Key可......
  • 【愚公系列】2023年09月 WPF控件专题 ListView控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • Linq中.AsEnumerable(), AsQueryable() ,.ToList(),的区别和用法
    当使用LINQ查询数据时,我们常常会面临选择使用.AsEnumerable(),.AsQueryable(),和.ToList()方法的情况。这些方法在使用时有不同的效果和影响,需要根据具体场景来选择合适的方法.AsEnumerable()方法:使用.AsEnumerable()方法可以将查询结果从数据库转换为IEnumerable类型,从而在......