1. ホーム
  2. java

[解決済み] Java セットの反復処理と変更はどのように行うのですか?

2023-06-22 01:09:38

質問

例えば、整数の集合があり、その集合の中のすべての整数を増加させたいとします。 どのようにすればよいでしょうか。

セットを反復している間に、そのセットから要素を追加したり削除したりしてもよいのでしょうか?

元のセットを反復している間に、要素を "コピーして修正する新しいセットを作成する必要がありますか?

編集:セットの要素が不変である場合はどうなりますか?

どのように解決するのですか?

反復処理中にセットを変更しようとすると、イテレータが壊れてしまいます。セットクラスは、getIterator()によってイテレータを提供します。

私の戦略は、セットを繰り返し処理し、各整数iについて、i+1を新しい一時的なセットに追加することです。反復処理が終わったら、元のセットからすべての要素を削除し、新しい一時的なセットのすべての要素を追加します。

Set<Integer> s; //contains your Integers
...
Set<Integer> temp = new Set<Integer>();
for(Integer i : s)
    temp.add(i+1);
s.clear();
s.addAll(temp);