求两个数组的交集 -;可以使用HashMap做
Posted 厚积_薄发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求两个数组的交集 -;可以使用HashMap做相关的知识,希望对你有一定的参考价值。
求两个数组的交集
思路:
1,第一个数组的元素放入hashmap中,令值为1(不论是否重复).
2. 循环检验第二个数组的元素,判断hashmap中是否已经存在该值(m.getKey(a2[i])),存在则value更新为2.
3. 将hashmap值为2的元素的key放到list中( if(e.getValue()==2)list.add(e.getKey()); ) ,变成数组(toArray()方法)后返回.
package com.yuxin.learn;
import java.security.KeyStore.Entry;
import java.util.*;
public class Main
public static Integer[] interset(int[] a1,int[] a2)
int len1 = a1.length;
int len2 = a2.length;
int len = a1.length+a2.length;
Map<Integer,Integer> m = new HashMap<Integer,Integer>(len);
LinkedList<Integer> ret = new LinkedList<Integer>();
for(int i=0;i<len1;i++)
if(m.get(a1[i])==null)
m.put(a1[i], 1);
for(int i=0;i<len2;i++)
if(m.get(a2[i])!=null)
m.put(a2[i],2);
for(java.util.Map.Entry<Integer, Integer> e:m.entrySet())
if(e.getValue()==2)
ret.add(e.getKey());
Integer[] retArray=;
return ret.toArray(retArray);
public static void main(String[] args)
int M=4;
int N=6;
ArrayList<Integer> l1 = new ArrayList<Integer>();
ArrayList<Integer> l2 = new ArrayList<Integer>();
Scanner scanner = new Scanner(System.in);
/*System.out.println("输入两个数组l1,l2,输入-1结束");
System.out.println("l1:");
int get = 0;
for(int i=0;i<M;i++)
get = scanner.nextInt();
l1.add(get);
for(int i=0;i<N;i++)
get = scanner.nextInt();
l2.add(get);
System.out.println(l1);
System.out.println(l2);*/
int a1[] = 45, 5, 2, 5,2334;
int a2[] = 2, 5, 2, 52, 5, 2334,22;
Integer[] r = interset(a1,a2);
for(Integer i:r)
System.out.println(i);
以上是关于求两个数组的交集 -;可以使用HashMap做的主要内容,如果未能解决你的问题,请参考以下文章