2013-10-06 43 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)