日期:2014-05-20  浏览次数:20680 次

请教一个不算复杂的算法:把list2比list1多的元素查找出来?
有两个List<String> list1和list2,List的每个元素由字母和汉字组成。list1有的元素,list2一定有;list2有的元素,list1不一定有。(相当于list2是在list1的基础上,多了几个元素)。现在想把list2比list1多的这些元素查找出来。

示例:list1={a1,b1,b2,c1},list2={a1,a2,b1,b2,c1,c2}。结果应为:a2,c2

本人算法底子不行,只能写出最基本的算法,效率不高。请问大家有什么好的算法吗?多谢指教!

------解决方案--------------------
我能想到的方法就是遍历
------解决方案--------------------

Collections.sort(list1);
Collections.sort(list2);
然后
list2.removeAll(list1);
------解决方案--------------------
jdk提供有现成的方法
list2.removeAll(list1);
然后你再打印一下list2  里面就只有a2,c2了
------解决方案--------------------
类似这样的, list2.retainAll(list1); 再打印list2,里面就是list1和list2的交集a1,b1,b2,c1
------解决方案--------------------
如果想简单的话,
那么就直接list1.removeAll(list2);
如果想研究算法:
目前想到的办法只有遍历list1
判断list1中的元素在list2中是否存在。
------解决方案--------------------
严谨点的想法:用removeAll(List)的方法,队列里的对象比较就要实现下