如何在没有迭代器的情况下迭代时从集合中删除元素

ame*_*nin -1 java collections guava

假设我有一个字符串列表(简化)

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

而且我想找到喜欢的情侣

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

我此刻接近这个问题的方式是

  1. 获得第一个元素
  2. 使用guava谓词来查找正确的对象
  3. 现在怎么办?

我最终得到了两个对象{a,a},但是我无法将它们从中删除,fullList因为我没有使用迭代的"迭代器"样式(因为我使用的是番石榴谓词它无论如何都不会起作用 - 因为我没有迭代器指向由Itarables.find(...)函数找到的元素).

我想以"高效"的方式做到这一点,所以我想避免多个嵌套循环等.

任何想法如何更正确/有效地处理这个问题?我有点卡住了.

Pet*_*rey 6

我会为每个元素创建一个频率计数.在番石榴术语中,这是一个MultiSet.从那里你可以创建一对对的集合,以及另一个单打的集合.这可以通过原始列表的一次传递和频率计数图的一次传递来完成.即O(n)