求两个数组的交集 -;可以使用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做的主要内容,如果未能解决你的问题,请参考以下文章

求两个数组的交集

求两个有序整型数组的交集

c语言中求交集的一个函数,不知道哪里错了,求高手解答。。。

python array 两个数组,求他们里面元素的交集,并把这些交集的值求和

Review系列求两个数组的交集

Review系列求两个数组的交集