求两个数组的交集 ->可以使用HashMap做
2016-08-05 19:21
471 查看
求两个数组的交集
思路:
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()方法)后返回.
思路:
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); } } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c语言实现hashmap(转载)
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序