今天項目中有個需求場景:
A和B都是List,而B是A的子集,現在想求A和B的差集。
想到了List中提供的removeAll()方法可以求得差集,但是結果確報了UnsupportedOperationException異常。
仔細分析了下,List A我是通過數組經過Arrays.asList()轉化成List,但是它是繼承AbstractList的子類,而AbstractList是不支持removeAll()和remove()操作的。
如果要執行remove()和removeAll()操作,可以轉化成Set()或者ArrayList、LinkedList才可以。
因為我的需求List A中的元素要保證唯一,所以我在數組轉化成List之后又轉化成了Set,之后就沒問題了。
1 Set<String> setA = new HashSet<String>(Arrays.asList(arrA));