2013-10-06 74 views
-1

比方說,我有字符串(簡化)如何刪除集合元素,而沒有迭代器遍歷

fullList = {a,b,c,d,a,d,c,b}

的名單,我想找到夫婦像

couplesList = {{a,a},{b,b}, ...}

我此刻的處理這個問題的方法是

  1. 獲取第一個元素
  2. 使用番石榴謂詞找到適當的對象
  3. 現在是什麼?

我結束了有2個對象{A,A}但我不能夠從fullList,因爲我沒有使用迭代的「迭代」式(刪除它們,因爲我使用的是番石榴斷言它無論如何不會工作 - 因爲我沒有迭代器指針指向由Itarables.find(...)函數找到的元素)。

我想這樣做,在「高效」的方式爲好,所以我想避免多個嵌套循環等

任何想法如何更準確地解決這個問題/有效的方式?我有點卡住了。

+3

你知道'Iterators.find'是一個嵌套循環嗎?如果不使用_understanding_,那麼使用Guava collection api是非常**的危險。 –

+0

@BoristheSpider很好...好點。 – amerykanin

回答

6

我會爲每個元素創建一個頻率計數。在番石榴術語中,這是一個MultiSet。從那裏你可以創建一個對的集合,和另一個單身的集合。這可以通過原始列表的一次通過和頻率計數映射的一次通過來完成。即O(n)