jdk8對list取交集 並集 差集

2021-09-27 08:55:31 字數 1595 閱讀 1910

// 交集

listintersection = list1.stream().filter(item -> list2.contains(item)).collect(tolist());

system.out.println("---得到交集 intersection---");

intersection.parallelstream().foreach(system.out :: println);

// 差集 (list1 - list2)

listreduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(tolist());

system.out.println("---得到差集 reduce1 (list1 - list2)---");

reduce1.parallelstream().foreach(system.out :: println);

// 差集 (list2 - list1)

listreduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(tolist());

system.out.println("---得到差集 reduce2 (list2 - list1)---");

reduce2.parallelstream().foreach(system.out :: println);

// 並集

listlistall = list1.parallelstream().collect(tolist());

listlistall2 = list2.parallelstream().collect(tolist());

listall.addall(listall2);

system.out.println("---得到並集 listall---");

listall.parallelstream().foreach(system.out :: println);

// 去重並集

listlistalldistinct = listall.stream().distinct().collect(tolist());

system.out.println("---得到去重並集 listalldistinct---");

listalldistinct.parallelstream().foreach(system.out :: println);

system.out.println("---原來的list1---");

list1.parallelstream().foreach(system.out :: println);

system.out.println("---原來的list2---");

list2.parallelstream().foreach(system.out :: println);

// 一般有filter 操作時,不用並行流parallelstream ,如果用的話可能會導致執行緒安全問題

以上方法如何針對的是物件列表, 那麼必須重寫該實體類的hashcode 和equals方法

C 對List取交集 差集以及並集

list以string型別為例,實際應用中可換做其他型別 1 取交集 取交集 static void intersection listlist2 new list listlist3 new list list3 list1.intersect list2 tolist console.write...

List交集 並集 補集 差集

最近回看了一下list的基礎,目前網上主流得對list交並補差有兩種方式 交集交集就是兩個集合都有的部分 lista listb 那a交b結果就是 並集並集就是將兩個集合中所有的元素加在一起 lista listb 那麼a並b結果就是 差集差集就是兩集合元素相減,只保留前面集合中剩下的元素 list...

Postgresql取並集,交集,差集

關鍵字union 例子 query1 union query2 關鍵字intersect 例子 query1 intersect query2 關鍵字except 例子 query1 except query2 其中query1和query2的select子句中欄位個數必須相同,且對應的資料型別必須...