List集合的並集 交集 差集以及原始碼

2021-07-11 20:49:23 字數 1791 閱讀 6201

其實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...