1. 程式人生 > >Collection中帶有All結尾的常用API詳解

Collection中帶有All結尾的常用API詳解

相同 contains 不變 這樣的 添加 重新 lean addall als

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

Collection中帶有All結尾的常用API詳解