我有5組數字值。我有興趣找到所有5組的交集。找到5組交集的有效方法
現在,我想到的是以下
Do a Collections.sort() on all 5 sets
找到最短的一組和所有其他組做了
shortestSet.retainAll(otherSet);
。
有沒有更有效的方法來做到這一點?
我有5組數字值。我有興趣找到所有5組的交集。找到5組交集的有效方法
現在,我想到的是以下
Do a Collections.sort() on all 5 sets
找到最短的一組和所有其他組做了
shortestSet.retainAll(otherSet);
。
有沒有更有效的方法來做到這一點?
您的解決方案很好。不過,在調用retainAll方法之前,不需要對數字進行排序。
你的解決方案看起來我的權利,如果我們明白,當你根據自己的尺寸寫Collections.sort()
要排序的集列表。基本原理是,如果我們打算使用set1.retainAll(set2)
(並且如果集合是HashSet
s),則每個交點運行時間應該基本上與set1
的元素數成線性關係。所以從最小的一個開始是有道理的。
我認爲這將是一個有效的方法(假設你的意思是排序集*的大小*) – 2013-04-26 18:11:28
幾乎dup:http://stackoverflow.com/questions/7574311/efficiently-compute-intersection-of- java中的兩個集合 – leonbloy 2013-04-26 18:11:28