最近回看了一下List的基礎,目前網上主流得對List交並補差有兩種方式
交集
交集就是兩個集合都有的部分 listA{ 1,2,3,4 } listB{2,3,4,5} 那A交B結果就是{2,3,4}
並集
並集就是將兩個集合中所有的元素加在一起 listA{ 1,2,3,4 } listB{2,3,4,5} 那么A並B結果就是{1,2,2,3,3,4,4,5}
差集
差集就是兩集合元素相減,只保留前面集合中剩下的元素 listA{ 1,2,3,4 } listB{2,3,4,5} 那么A差B結果{1} 如果B差A 那么結果{5}
補集
我對補集的理解有點偏,但是比較好記,高中的時候就這么記得, A補B listA{ 1,2,3,4 } listB{2,3,4,5} 結果{5} 其實就是B差A 讀法:A關於B的相對補集是{5}
B補A 結果{1} 讀法B關於A的補集是{1}
第一種:CollectionUtils工具包中的四個方法;該類所在包org.apache.commons.collections.CollectionUtils
//並集 CollectionUtils.union(a, b); //交集 CollectionUtils.intersection(a, b); //交集的補集 CollectionUtils.disjunction(a, b); //集合相減 CollectionUtils.subtract(a, b);
第二種:直接調用List中的方法
A交B
listA.retainAll(listB);
A並B
listA.addAll(listB);
A減去B
listA.removeAll(listB);
上述的只是基礎類型的排序String,Integer等,如果涉及到工作上業務實體類的時候需要在實體類中重寫 equals(
@Override public boolean equals(Object obj) { return true; } @Override public int hashCode() { return 0; } 根據具體業務寫
)方法和hasCode()方法