Java如何找到两个数组的交集

Python09

Java如何找到两个数组的交集,第1张

//方法有很多,说一个简单点..

import java.util.Arrays

import java.util.HashSet

public class RetTest {

public static void main(String[] args) {

HashSet<Integer> hs=new HashSet<Integer>()//set集合

int[] a={1,2,3,4,5},//两个数组

  b={0,3,4,5,6}

for (int i = 0 i < a.length i++) {//外层

for (int j = 0 j < b.length j++) {//内层

if(a[i]==b[j]) {//如果一样

hs.add(a[i])//就装集合

}

}

}

System.out.println("a:"+Arrays.toString(a))

System.out.println("b:"+Arrays.toString(b))

System.out.println("交集为:"+hs)

}

}

空间换时间,先创建Map集合Map<T,Integer>map,然后遍历第一个数组,调用map.put(T,1),然后遍历第二个数组的每个元素T,如果map.get(T) != null,则说明该元素为两个数组的交集,否则不是。

public class Intersection {

public static void main(String[] args) {

//给定两个数组

int[] as = {1,5,8,9,4,6}

int[] bs = {5,7,3,2}

//记录相同的元素(String类型方便下面判断)

String[] cs = new String[as.length>bs.length?as.length:bs.length]//长度不超过上麦年量数组中最大长度

//循环比较

for(int i=0i<as.lengthi++){

int flag = 0//有相同元素标记

for(int j=0j<bs.lengthj++){

if(bs[j]==as[i]){

flag = flag + 1

}

}

int place = 0//记录cs数组已经有几个元素

for (String j : cs) {

place = 0

if(j!=null&&j!=""){

place = place + 1

}

}

if(flag!=0){

cs[place] = as[i]+""

}

}

//循环输出交集数组

for (String i : cs) {

if(i!=null){

System.out.println(i)

}

}

}

}