Collection中带有All结尾的常用API详解

Collection中带有All结尾的常用API有四种:addAll(),removeAll(),containsAll() 和 retainAll()

详解:

假设现有2个List对象,分别为list1和list2

一、addAll()

list1.addAll(list2)

将list2中的所有元素都添加到list1中。list1元素有变,list2元素没变。

 

二、removeAll()

list1.removeAll(list2)

首先list1与list2先取交集,然后删除list1中的交集元素,接着将删除交集后的list1重新赋给list1。list1元素有变,list2元素不变。

 

三、containsAll()

boolean flag = list1.containAll(list2)

判断list1中是否包含list2中的所有元素,若包含返回true,否则返回false 。

 

四、retainAll()

boolean flag = list1.retainAll(list2)

该方法是取2个集合的交集。首先list1和list2取到交集,将交集赋给list1,如果list1集合元素组成发生了变化,那么就返回true,否则返回false。

特殊情况:若list1和list2两个集合完全相同,list1和list2的交集就是他们本身,把交集赋给list1时,list1没有发生任何的变化,所以返回false。

简而言之:若retainAll()中list1发生变化,就返回 true,不发生变化就返回false 。

 

脑补:

高级Java开发工程师,面试过程中经常会遇到这样的面试题 “怎样快速获取2个List集合的交集?”,相信您肯定遇到过,答案就是用到List对象的retailAll()方法。

posted @ 2018-11-13 17:38  80后的梦  阅读(227)  评论(0编辑  收藏  举报