其實list集合在平時開發中使用的比較多,下面我們來看看list集合的並集、交集、差集以及原始碼
1、並集:
jdk api 中並集的實現有兩種方式:(1)、在原集合的末尾追加(2)、在原集合的指定位置開始追加
(1)、
addall(collection
<? extendse> c)
按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素新增到此列表的尾部。
(2)、
addall(int index, collection
<? extends e> c)
從指定的位置開始,將指定 collection 中的所有元素插入到此列表中。
原始碼:arraylist 集合 並集
// 兩個集合並集的實現
public boolean addall(collection<? extends e> c)
其中用到了兩個陣列賦值工具:
1、arrays.copyof(elementdata, newcapacity); 將舊陣列中的資料複製到新陣列中去
2、system.arraycopy(object src, int srcpos,object dest, int destpos, int length)
從指定源陣列中複製乙個陣列,複製從指定的位置開始,到目標陣列的指定位置結束,即src 被複製陣列,srcpos 起始索引 ,length要複製陣列的長度,dest原有陣列destpos 指定位置開始新增。
原始碼:arraylist集合 交集
//交集
public boolean retainall(collection<?> c)
private boolean batchremove(collection<?> c, boolean complement) finally
// 刪除 不相等哪些資料,w是從0開始 w的值也就是兩個集合交集元素的個數
if (w != size)
}return modified;
}
(1)、使用集合的contains()方法判斷這個元素在集合中是否存在存在返回true 不存在返回false
(2)、同樣適用 system.arraycopy(elementdata, r, elementdata, w, size - r); 方法將elementdata 中的從r開始的元素複製到elementdata 中的w開始的位置,複製的長度是size-r
原始碼:arraylist 集合差集
//差集
public boolean removeall(collection<?> c)
private boolean batchremove(collection<?> c, boolean complement) finally
// 刪除 不相等哪些資料,w是從0開始 w的值也就是elementdata中元素的個數-c中和elementdata中相同的元素的個數
if (w != size)
}return modified;
}
差集 和交集的適用了同乙個工具方法,乙個是相同的留下,乙個是相同的去掉其他思路都一樣!
List交集 並集 補集 差集
最近回看了一下list的基礎,目前網上主流得對list交並補差有兩種方式 交集交集就是兩個集合都有的部分 lista listb 那a交b結果就是 並集並集就是將兩個集合中所有的元素加在一起 lista listb 那麼a並b結果就是 差集差集就是兩集合元素相減,只保留前面集合中剩下的元素 list...
C 對List取交集 差集以及並集
list以string型別為例,實際應用中可換做其他型別 1 取交集 取交集 static void intersection listlist2 new list listlist3 new list list3 list1.intersect list2 tolist console.write...
Python 集合的交集,並集,差集
前提 測試中需要給某些應用設定黑名單,所以從.txt檔案中求兩者的差集,就可以篩選出需要測試的應用 思路 將.txt檔案中的資料讀到list列表中,求列表的交集,再輸出到指定目錄 一.list操作的思路 a 1,2,3,4,5,6 b 5,6,7 c 交集c i for i in a if i in...