繁体   English   中英

Java多数组列表-查找常见元素

[英]Java many arraylists - find common element

我有一个生成许多存储在集合中的数组列表的应用程序。 所有的arraylist将始终具有一个公共元素。

我需要弄清楚哪个是常见元素。 我用两个列表并使用List.contains(...)来管理它,但是需要将其缩放到许多列表。

我怎样才能做到这一点?

如果您Set所有List retainAll() All,则最终将获得该集中所有公共元素。

Set set =  new HashSet();
for ( List list : yourLists ) 
{ 
    set.addAll( list );
} 
for ( List list : yourLists )
{
    set.retainAll( list );
}

几乎可以对其进行优化,使其仅遍历一次列表(并消耗等于所有现有列表大小加上 第一个列表的其他大小的堆空间),但是出于说明目的,此版本更好...

干杯,

使用哈希表将每个数组列表中的唯一元素映射到其频率(即,即使在同一数组列表中出现多次元素,也只需将其递增一次)。 遍历哈希表,直到该值等于数组列表的数量。 相应的键是我们正在寻找的元素。

使用retainAll(),以便在每一步中都有列表的交集

list1.retainAll(list2);
list1.retainAll(list3);

因此, list1将成为所有元素的交集。 现在,如果要复制通用元素,则需要将最终列表添加到“设置并完成”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM