相信朋友们在程序开发过程中,或多或少的,都会用到集合相关的运算,如:求集合的并集、交集、差集等。今天我们就给大家介绍下Java中常用的几种求并集、交集、差集、交补集、笛卡尔集的方法。

文章中介绍的几种集合运算,主要是依赖JDK里的相关方法,以及Apache的commons-collections4库和Google的guava库中的相关方法。Apache和Google的库依赖如下:

java代码如何获取两个数组差集(Java求并集交集)(1)

并 集

并集是求两个集合里的所有元素的总和,如:集合1为:[1, 2],集合2为:[3, 4],求并集后的结果为:[1, 2, 3, 4]。求并集的常用方法如下:

java代码如何获取两个数组差集(Java求并集交集)(2)

交 集

交集是求两个集合中共有的元素,如:集合1为:[1, 2],集合2为:[1, 3],求交集后的结果为:[1],求交集的常用方法如下:

java代码如何获取两个数组差集(Java求并集交集)(3)

差 集

差集是求一个集合中排除掉另一个集合中的元素后剩下的元素(注意:集合1差集合2和集合2差集合1的结果可能是不一样的),如:集合1为:[1, 2],集合2为:[1, 3],集合1差集合2的结果为:[2],集合2差集合1的结果为:[3]。求差集的常用方法如下:

java代码如何获取两个数组差集(Java求并集交集)(4)

交补集

交补集是求两个集合互为不一样的元素,可以理解为求两个集合之间并集和交集的补集。如:集合1为:[1, 2],集合2为:[1, 3],求交补集的结果为:[2, 3] 。求交补集的常用方法如下:

java代码如何获取两个数组差集(Java求并集交集)(5)

笛卡尔积

笛卡尔积是求集合之间每个元素一一组合而成的集合,如:集合1为:[1, 2],集合2为:[1, 3],求笛卡尔集的结果为:[[1, 1], [1, 3], [2, 1], [2, 3]] 。求笛卡尔集的常用方法如下:

java代码如何获取两个数组差集(Java求并集交集)(6)

以上罗列的各种方法,都能满足计算的要求,具体的不同在于:有的方法是直接把计算结果更新到入参对象里,返回值为表示入参对象是否有变更的一个布尔值;有的方法是不修改入参对象,而是把计算结果作为新对象返回。选择使用哪个方法,主要是看代码上下文的情况以及自己的一些编码风格。

最后,需要提一下的是,本文所举例子的集合里存放的对象都是Integer,但是在具体的代码里集合里存放的可能是其他自定义类的对象,那就需要大家注意自定义类需要覆写hashCode()和equals()方法,因为很多集合运算都是依赖这两个方法的返回值的,如果不正确覆写,可能会导致计算结果的错误。

------ The End ------

,