特定のセットをバラバラのサブセットに分割するコードを書きたいと思っています。たとえば、サッカー選手のセットを、所属するチームに応じて分割します。最後に、代表者のリスト、つまり各チームから 1 人のプレーヤーが必要です。
すべてのサッカー選手は、チームの他のすべての選手を知っています。これは、複雑さに非常に関連しています。したがって、これを行う方法に関する私の現在の考えは次のとおりです(set
現在の場所は ですLinkedHashSet<T>
):
while (!set.isEmpty()) {
E e = set.iterator().next();
makeRepresentative(e);
set.remove(AllPlayersOnSameTeamAs(e));
}
ただし、while ループのすべてのステップで新しい反復子を作成するのは奇妙に感じます。LinkedHashSet は、(LinkedList の動作のために) 内部で何らかのfirstElement()
機能を持っているはずですが、何らかの理由でこれを行う方法が見つかりません。代わりに foreach ループも試しましたが、java.util.ConcurrentModificationException
.
これを正しく行うにはどうすればよいですか?