我有一个java(grails)列表列表,我试图找到列表中每个列表中存在的元素。有没有人有快速的方法来做到这一点?谢谢!
答案 0 :(得分:1)
如果列表具有唯一元素,您可以这样做(我理解一个元素可以放在少数列表中,但每个列表只能放置一次。否则,如果第一个列表包含[1,2,2,3]和其他包含[x,2,y]作为输出,你会看到[2,2]而不是[2])
List tmpList=new ArrayList<>(lists.get(0));
for(int i=1; i<lists.size(); i++)
tmpList.retainAll(new ArrayList<>(lists.get(i)));
System.out.println(tmpList);
答案 1 :(得分:0)
获取1个链接列表,复制它,然后检查所有其他链接列表。
如果列表没有元素,则从新制作的列表中删除该元素。
您可以将新制作的列表实现为地图或哈希表,以减少时间复杂度。
无论哪种方式,除非你的列表是排序的,否则你的算法不能比O(n)更快,其中n是所有列表中所有元素的总和
我概述的算法是O(nm),其中m是最小列表的计数。