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()方法。