目录
Java求两个数组的并集,代码如下:
/**
* 求并集
*
* @param m
* @param n
* @return
*/
private static Integer[] getB(Integer[] m, Integer[] n)
{
// 将数组转换为set集合
Set<Integer> set1 = new HashSet<Integer>(Arrays.asList(m));
Set<Integer> set2 = new HashSet<Integer>(Arrays.asList(n));
// 合并两个集合
set1.addAll(set2);
Integer[] arr = {};
return set1.toArray(arr);
}
Java求两个数组的交集,代码如下:
/**
* 求交集
*
* @param m
* @param n
* @return
*/
private static Integer[] getJ(Integer[] m, Integer[] n)
{
List<Integer> rs = new ArrayList<Integer>();
// 将较长的数组转换为set
Set<Integer> set = new HashSet<Integer>(Arrays.asList(m.length > n.length ? m : n));
// 遍历较短的数组,实现最少循环
for (Integer i : m.length > n.length ? n : m)
{
if (set.contains(i))
{
rs.add(i);
}
}
Integer[] arr = {};
return rs.toArray(arr);
}
Java求两个数组的差集,代码如下:
/**
* 求差集
*
* @param m
* @param n
* @return
*/
private static Integer[] getC(Integer[] m, Integer[] n)
{
// 将较长的数组转换为set
Set<Integer> set = new HashSet<Integer>(Arrays.asList(m.length > n.length ? m : n));
// 遍历较短的数组,实现最少循环
for (Integer i : m.length > n.length ? n : m)
{
// 若是集合里有相同的就删掉,若是没有就将值添加到集合
if (set.contains(i))
{
set.remove(i);
} else
{
set.add(i);
}
}
Integer[] arr = {};
return set.toArray(arr);
}
交集、差集、并集测试代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 用最少循环求两个数组的交集、差集、并集
*
* @author BXL
*
*/
public class Test
{
public static void main(String[] args)
{
Integer[] m = { 1, 2, 3, 4, 5 };
Integer[] n = { 3, 4, 6 };
System.out.println("----------并集------------");
Integer[] b = getB(m, n);
for (Integer i : b)
{
System.out.println(i);
}
System.out.println("----------交集------------");
Integer[] j = getJ(m, n);
for (Integer i : j)
{
System.out.println(i);
}
System.out.println("----------差集------------");
Integer[] c = getC(m, n);
for (Integer i : c)
{
System.out.println(i);
}
}
}
作者:筱白爱学习!
期待三连(点赞,收藏,关注),关注筱白不迷路,筱白带你一起进步!!!