我正在寻找将给定集合划分为不相交子集的代码。例如,一组足球运动员,我们根据他们所属的球队对他们进行划分。最后我想要一份代表名单,即每支球队的一名球员。
所有足球运动员都认识他们球队中的所有其他球员——这与复杂性非常相关。所以,我目前关于如何做到这一点的想法如下(set
目前在哪里 a LinkedHashSet<T>
):
while (!set.isEmpty()) {
E e = set.iterator().next();
makeRepresentative(e);
set.remove(AllPlayersOnSameTeamAs(e));
}
然而,在 while 循环的每一步都构建一个新的迭代器感觉很奇怪。LinkedHashSet 应该在内部具有某种firstElement()
功能(对于它的 LinkedList 行为),但由于某种原因,我找不到如何做到这一点。我也尝试了一个 foreach 循环,但这导致了java.util.ConcurrentModificationException
.
我应该如何正确地做到这一点?