Java许多阵列清单 - 找到共同元素



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

我需要弄清楚哪个是共同元素。我用两个列表对此进行了管理,并使用List.contains(...),但需要将其扩展到许多列表。

我该怎么做?

如果您 retainAll() List s to a Set,最终将获得集合中的所有常见元素。

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

这几乎可以优化,只能在列表中遍历一次(并且使用堆积空间等于所有现有列表的大小 plus >列表),但是出于说明目的,此版本更好...

欢呼,

使用一个尺寸可将每个阵列列表中唯一元素映射到其频率的标签(即,即使在同一arraylist中有多个出现元素的出现,也必须仅递增一次)。迭代通过标签,直到值等于阵列列表的数量为止。相应的密钥是我们要寻找的元素。

使用rearainall(),以便在每个步骤中都有列表的交集

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

因此,这种方式list1将是所有元素的交点。现在,如果要复制通用元素,则需要添加最终列表以设置和完成。

最新更新