Set的交集、差集踩坑記錄


項目中我用到了Set的retainAll和removeAll兩個方法取差集和交集。

用法網上都有,我也不展示了。

但是因為我是急着用,直接就照着寫了,沒想到出大問題了。

因為我的set是一個map的keySet()方法返回的,然后剛好上面的那兩個方法

都是會對源數據進行操作的,比如說

Map<String, String> map;(十條數據)
Set<String> keys= map.keySet();(十條數據)
Set<String> a ;(五條數據)
執行:keys.removeAll(a);

此時map就只剩下五條數據了,這就有點坑了。

所以Set的retainAll和removeAll一定要慎用,如果不想改變源數據的話,可以用這個

(com.google.common.collect)

我們現在用的是這個集合工具,還挺方便的。

因此,用它的話,取交集差集就不用擔心影響到源數據了,因為它沒有動源數據。

差集

difference()函數返回兩個集合的差集,即返回的在第一個集合但不在第二個集合中的元素

Sets.difference(set1, set2);

交集:

intersection()方法用於返回兩個或更多集合中都包含的元素,即交集。

Sets.intersection(set1,set2);

總結:出現這種bug是我對api不熟練的原因,所幸失敗是成功之母,這次踩坑了,以后就會記住了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM