java代码如何获取两个数组差集(Java求并集交集)
相信朋友们在程序开发过程中,或多或少的,都会用到集合相关的运算,如:求集合的并集、交集、差集等。今天我们就给大家介绍下Java中常用的几种求并集、交集、差集、交补集、笛卡尔集的方法。
文章中介绍的几种集合运算,主要是依赖JDK里的相关方法,以及Apache的commons-collections4库和Google的guava库中的相关方法。Apache和Google的库依赖如下:
并 集
并集是求两个集合里的所有元素的总和,如:集合1为:[1, 2],集合2为:[3, 4],求并集后的结果为:[1, 2, 3, 4]。求并集的常用方法如下:
交 集
交集是求两个集合中共有的元素,如:集合1为:[1, 2],集合2为:[1, 3],求交集后的结果为:[1],求交集的常用方法如下:
差 集
差集是求一个集合中排除掉另一个集合中的元素后剩下的元素(注意:集合1差集合2和集合2差集合1的结果可能是不一样的),如:集合1为:[1, 2],集合2为:[1, 3],集合1差集合2的结果为:[2],集合2差集合1的结果为:[3]。求差集的常用方法如下:
交补集
交补集是求两个集合互为不一样的元素,可以理解为求两个集合之间并集和交集的补集。如:集合1为:[1, 2],集合2为:[1, 3],求交补集的结果为:[2, 3] 。求交补集的常用方法如下:
笛卡尔积
笛卡尔积是求集合之间每个元素一一组合而成的集合,如:集合1为:[1, 2],集合2为:[1, 3],求笛卡尔集的结果为:[[1, 1], [1, 3], [2, 1], [2, 3]] 。求笛卡尔集的常用方法如下:
以上罗列的各种方法,都能满足计算的要求,具体的不同在于:有的方法是直接把计算结果更新到入参对象里,返回值为表示入参对象是否有变更的一个布尔值;有的方法是不修改入参对象,而是把计算结果作为新对象返回。选择使用哪个方法,主要是看代码上下文的情况以及自己的一些编码风格。
最后,需要提一下的是,本文所举例子的集合里存放的对象都是Integer,但是在具体的代码里集合里存放的可能是其他自定义类的对象,那就需要大家注意自定义类需要覆写hashCode()和equals()方法,因为很多集合运算都是依赖这两个方法的返回值的,如果不正确覆写,可能会导致计算结果的错误。
------ The End ------
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com