簡體   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