java 取交集方法retainAll的实现

 更新时间:2021年06月08日 16:07:44   投稿:jingxian  
这篇文章主要介绍了java 取交集方法retainAll的实现操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java 取交集方法retainAll

有两个集合newCoures和oldCourses,判断这两个集合是否包含相同的对象或元素,

可以使用retainAll方法:

oldCourses.retainAll(newCoures)

如果存在相同元素,oldCourses中仅保留相同的元素。

如果不存在相同元素,oldCourse会变为空。

如果有多个集合oldCourses1、oldCourses2、oldCourses3等,分别与newCourses比较,应该将newCourses统一放在后面,像这样:

oldCourses1.retainAll(newCoures);
oldCourses2.retainAll(newCoures);
oldCourses3.retainAll(newCoures);
public class Test {
    public static void main(String[] args) {
        List<String> list1 = new ArrayList<String>();
        List<String> list2 = new ArrayList<String>();
        List<String> list3 = new ArrayList<String>();
        for (int i = 0; i < 20; i++) {
            list1.add(i+"");
            if(i%2 == 0) {
                list2.add(i+"");
            }
            list3.add(i+"@");
        }
        // list1 与 list2 存在相同元素,list1集合只保留list2中存在的元素
        list1.retainAll(list2);
        if(list1.isEmpty()) {
            System.out.println("不包含");
        } else {
            System.out.println("包含");
        }
        System.out.println(list1);
        // list1 与 list3 不存在相同元素,list1集合变为空
        list1.retainAll(list3);
        if(list1.isEmpty()) {
            System.out.println("不包含");
        } else {
            System.out.println("包含");
        }
        System.out.println(list1);
    }
}

运行结果如下:

这里写图片描述

retainall的问题

在调用java中的retainall时遇到个问题

代码如下:

public static ArrayList<Integer> res_and(ArrayList<Integer> s1,ArrayList<Integer> s2)
 {
  s1.retainAll(s2);
//  System.out.println("s1=");
//  System.out.println(s1);
  return s1;

我定义了一个函数,用来求出s1和s2共有的部分,将其保存在s1中。

但是貌似这么写会导致s1中重复元素会重复出现两次。

解决办法:

在返回前加上一句

s1  = new ArrayList<Integer>(new HashSet<Integer>(s1));

即可。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 3年面试经验告诉你Mybatis是如何进行分页的

    Java 3年面试经验告诉你Mybatis是如何进行分页的

    这篇文章主要介绍了Java 3年面试经验告诉你Mybatis是如何进行分页的,对于任何ORM框架,分页的实现逻辑无外乎两种,不管怎么包装,最终给到开发者的,只是使用上的差异而已,本文给大家讲解的很明白,感兴趣的朋友一起看看吧
    2022-09-09
  • SpringBoot排除不需要的自动配置类DataSourceAutoConfiguration问题

    SpringBoot排除不需要的自动配置类DataSourceAutoConfiguration问题

    这篇文章主要介绍了SpringBoot排除不需要的自动配置类DataSourceAutoConfiguration问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • idea在运行期间,实现让修改的页面实时生效

    idea在运行期间,实现让修改的页面实时生效

    这篇文章主要介绍了idea在运行期间,实现让修改的页面实时生效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 了解spring中的CloudNetflix Hystrix弹性客户端

    了解spring中的CloudNetflix Hystrix弹性客户端

    这篇文章主要介绍了了解spring中的CloudNetflix Hystrix弹性客户端,客户端弹性模式是在远程服务发生错误或表现不佳时保护远程资源(另一个微服务调用或者数据库查询)免于崩溃。,需要的朋友可以参考下
    2019-06-06
  • Spring Boot Admin管理监控数据的方法

    Spring Boot Admin管理监控数据的方法

    本篇文章主要介绍了Spring Boot Admin管理监控数据的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 教你怎么用Java回溯算法解数独

    教你怎么用Java回溯算法解数独

    一直不太会数独问题,这次下决定搞明白,所以整理了本篇文章,文中有非常详细的代码示例,对不会算法的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • 关于Struts2文件上传与自定义拦截器

    关于Struts2文件上传与自定义拦截器

    本篇文章,小编将为大家介绍关于Struts2文件上传与自定义拦截器,有需要的朋友可以参考一下
    2013-04-04
  • Java 实战项目之CRM客户管理系统的实现流程

    Java 实战项目之CRM客户管理系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个CRM客户管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Thymeleaf 3.0 自定义标签方言属性的实例讲解

    Thymeleaf 3.0 自定义标签方言属性的实例讲解

    这篇文章主要介绍了Thymeleaf 3.0 自定义标签方言属性的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Spring MVC中处理ajax请求的跨域问题与注意事项详解

    Spring MVC中处理ajax请求的跨域问题与注意事项详解

    跨域问题是我们大家在开发中会经常遇到的一个问题,所以下面这篇文章主要给大家介绍了关于Spring MVC中处理ajax请求的跨域问题与注意事项的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-11-11

最新评论