朋友的一道面试题
2014-08-04 18:27
141 查看
现在有两个数据列
A :1,5,4,2,7,19,44,98,20,3,55
B :5,55,6,8,19,44,33,22,17
编程输出没有同时存在于两个数据列中的数据
有人在做此题目的时候,由于大意,所以,造成此题不对,这是第一次出错的代码
下来讲解此题的正确解法:
package com.daqinlingnan.test2; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** 现在有两个数据列 A 1,5,4,2,7,19,44,98,20,3,55 B 5,55,6,8,19,44,33,22,17 编程输出没有同时存在于两个数据列中的数据 */ public class Test05 { public static void main(String[] args) { List<Integer> Alist = new ArrayList<Integer>(); List<Integer> Blist = new ArrayList<Integer>(); int[] a = {1,5,4,2,7,19,44,98,20,3,55}; int[] b = {5,55,6,8,19,44,33,22,17}; for (int a1 : a) { //循环向集合A添加数组里面的元素 Alist.add(a1); } for (int b1 : b) { //循环向集合B添加数组里面的元素 Blist.add(b1); } // System.out.println("Alist:"+Alist); // System.out.println("Blist:"+Blist); Map<Integer,Integer> map = new HashMap<Integer, Integer>(); //此处的功能是:把第一个集合的值复制给map的value,并且设置值为1 for (int aa1 : Alist) { map.put(aa1, 1); } for (int bb1 : Blist) { //从集合B里面的元素作为map中的key,判断是否有值 Integer num = map.get(bb1); //如果判断有值,则表明该元素在集合Map中已经存在,那么,我们可以把value值进行+1,以此区别value=1的情况 if (num != null) { map.put(bb1, ++num); continue; } //如果判断没有值,则表明该元素在集合A中不存在,我们可以把它也设置成1 map.put(bb1, 1); } //讲Map集合里面的数据复制到集合li3 List<Integer> li3 = new ArrayList<Integer>(); for (Map.Entry<Integer, Integer> mm : map.entrySet()) { //当value值是1的时候,表明没有同时存在于两个数据列中的数据 //当value值是2的时候,可以获取两个数据列中相同的数据(可以尝试一下mm.getValue() == 2的情况) if (mm.getValue() != 2) { li3.add(mm.getKey()); } } //循环获取集合li3里面的数据,就是我们所需要的数据 for (Integer s: li3) { System.out.print(s+","); } } }
获得结果是:
1,2,33,3,4,98,6,7,8,17,20,22,
结果正确
相关文章推荐
- 一道数字的面试题
- 一道sizeof面试题的收获
- 今天做到一道面试题:Android中进程的通信方式
- 海量数据处理之归并、堆排、前K方法的应用:一道面试题
- 一道二维数组的面试题
- 一道优雅面试题分析js中fn()和return fn()的区别
- 海量数据处理之归并、堆排、前K方法的应用:一道面试题
- Google的一道面试题的推广(扔鸡蛋不破的层数,2个,3个,n个鸡蛋呢)
- 一道短小强悍的C++面试题
- 一道百度的面试题解答
- 一道经典的面试题:如何从N个数中选出最大(小)的n个数
- 一道面试题:赛马问题
- 今天碰到一道比较有趣的面试题,大家来探讨一下。
- 一道算法题:华为面试题
- 关于一道谷歌面试题——丑数的解答
- 一道面试题:等概率随机数
- 记录一道面试题
- 联想利泰的一道做出来就给月薪7K的面试题--交通灯管理系统
- 一道值得收藏的java面试题
- 腾讯的一道面试题