这里写自定义目录标题

retainAll(),接口中的一个方法,ArrayList有对其实现。取交集后有变化返回ture,无变化返回false;没有交集时原集合变为空集合[]

Removes from this list all of its elements that are contained in the specified collection.
Params:
c – collection containing elements to be removed from this list
Returns:
true if this list changed as a result of the call
Throws:
ClassCastException – if the class of an element of this list is incompatible with the specified collection (optional)
NullPointerException – if this list contains a null element and the specified collection does not permit null elements (optional), or if the specified collection is null
See Also:
Collection.contains(Object)
    public boolean retainAll(Collection<?> c) {Objects.requireNonNull(c);return batchRemove(c, true);}
  1. 传入参数不可为空,删除List中含有传入集合的元素。 当List发生变化时,返回true,否则返回false。
  2. 当List中的元素与传入的List中的元素不匹配时,抛出 ClassCastException类型转换异常。
  3. 当List含有null元素并且传入的集合不允许有null元素时,抛出NullPointerException空指针异常;传入集合为空时也抛出空指针异常。

代码及执行结果

List<String> strings = new ArrayList<String>(){{add("a1");add("b2");add("c3");}};System.out.println("strings = " + strings);List<String> retainTrue = new ArrayList<String>(){{add("a1");add("c3");add("e5");}};System.out.println("retainTrue = " + retainTrue);// 取交集后有变化返回ture,无变化返回false;没有交集时原集合变为空集合[]boolean changed = retainTrue.retainAll(strings);System.out.println(changed);System.out.println(retainTrue);List<String> retainFalse = new ArrayList<String>(){{add("c3");}};boolean noChanged = retainFalse.retainAll(strings);System.out.println(noChanged);System.out.println("retainFalse = " + retainFalse);List<String> retainEmpty = new ArrayList<String>(){{add("d4");add("e5");add("f6");}};boolean emptyChanged = retainEmpty.retainAll(strings);System.out.println(emptyChanged);System.out.println("retainEmpty = " + retainEmpty);
strings = [a1, b2, c3]
retainTrue = [a1, c3, e5]
true
[a1, c3]
false
retainFalse = [c3]
true
retainEmpty = []

注意:retainAll()方法的返回值不可作为判断是否有交集的依据,只是判断原List在调用retainAll()方法后,是否有变化而已。可以对原List进行判空来确定是否取得交集,取得交集则不为空。

Java中retainAll方法使用相关推荐

  1. Java ArrayList中retainAll()方法具有什么功能呢?

    转自: Java ArrayList中retainAll()方法具有什么功能呢? 下文笔者讲述java中ArrayList方法的功能简介说明,如下所示: retainAll()方法的功能:用于保留 a ...

  2. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  3. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  4. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  5. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  6. java中main方法前的public static void及其后面的(String[] args)【笔记自用】

    为什么Java的main方法必须是public static void? 一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理 ...

  7. java中同步_在Java中的方法同步和语句同步(块同步) - Break易站

    Java 多线程 线程主要通过共享对字段的访问和参考字段引用的对象进行通信.这种通信形式非常有效,但可能出现两种错误:线程干扰和内存一致性错误.需要一些同步构造来防止这些错误.以下示例显示了我们需要同 ...

  8. JAVA中的方法和构造方法有什么区别

    JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...

  9. java中的方法求和_在Java中模拟求和类型的巧妙解决方法

    java中的方法求和 在继续阅读实际文章之前,我想感谢令人敬畏的Javaslang库的作者Daniel Dietrich ,他在我面前有了这个主意: @lukaseder尝试使用静态方法<T,T ...

最新文章

  1. 单连接算法与全连接算法
  2. CentOS7 部署 galera cluster mariadb 10.1
  3. bluemix java_Bluemix 基础:将 SQL 数据库添加到您的 Java 应用程序中
  4. MSSQL字符串处理-清除指定不连续或连续的字符
  5. Canvas绘制星球轨迹移动
  6. js 中方便调试 打印日志 -- 将json 和字符串互转
  7. 「前端早读君007」css进阶之彻底理解视觉格式化模型
  8. mysql 数据传输 定时,MySQL数据库定时备份的实现方法
  9. idea 控制台程序的打包
  10. Anaconda3+Python3.6搭建Tensorflow
  11. Python使用递归法和函数式编程计算整数各位之和
  12. layui表单验证范例
  13. gitlab中创建项目组及项目
  14. Office 365网络链接概览(三)--专线express route
  15. HashMap面试灵魂几问
  16. hbuilderx 使用总结
  17. 基于HAL库创建Keil工程模板
  18. 关于AES:加密方式,让你的APK无懈可击(1),死磕原理
  19. 如何在Ubuntu 14.04上使用NSD——一套仅权威DNS服务器
  20. java 视频 解码_关于视频解码总结--JavaCV

热门文章

  1. GMV单场破百万,我在抖音电商找到了生意新增量
  2. linux下无法删除文件
  3. Python计算机视觉编程第二章——局部图像描述子
  4. BUAA-OO-第二单元总结
  5. 【设计模式自习室】适配器模式
  6. 【Matlab学习手记】偏最小二乘回归
  7. RPA「C位」卷王,5行代码搞定订单自动发货!
  8. 贴图、纹理、材质、着色器
  9. Backbone 之 Inception:纵横交错 (Pytorch实现及代码解析)
  10. 张益唐:数学的浪漫 —— 人工智能的很多东西实际上就是一种最优化问题