[英]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.