有两个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);
list2.removeAll(list1);
然后你再打印一下list2 里面就只有a2,c2了
那么就直接list1.removeAll(list2);
如果想研究算法:
目前想到的办法只有遍历list1
判断list1中的元素在list2中是否存在。
如果使用API的话,removeAll是不错的选择。研究算法,就需要看一下具体的实现了。
还有那个CollectionUtils.subtract(List list1, List list2 );