1. ホーム

[解決済み】java.util.Setにget(int index)がないのはなぜですか?)

2022-04-03 20:44:04

質問

正当な理由があるのでしょうが、なぜ java.util.Set インターフェースには get(int Index) または類似の get() メソッドを使用することができますか?

セットは物を入れるには最適のようですが、そこから一つの項目を取り出すエレガントな方法が見つかりません。

最初の項目が欲しいことが分かっている場合は set.iterator().next() しかし、そうでない場合は、特定のインデックスの項目を取得するために、配列にキャストする必要があるようです。

セットからデータを取得する適切な方法は何ですか?(イテレータを使う以外に)

APIから除外されているということは、これをしない正当な理由があるのでしょうね。

EDITです。 いくつかの非常に素晴らしい回答があり、またいくつかの回答が「もっとコンテキストを」と述べています。 具体的なシナリオはdbUnitテストで、クエリから返されたセットには1つのアイテムしかなく、そのアイテムにアクセスしようとしていることを合理的に主張することができました。

しかし、この質問はシナリオがなくても、より焦点を絞ったものとして有効です。

セットとリストの違いは何ですか .

以下の素晴らしい回答をありがとうございました。

解決方法は?

集合には順序がないからです。一部の実装ではそうなっています(特に java.util.SortedSet インターフェイス)がありますが、これは集合の一般的な特性ではありません。

もし、この方法でセットを使おうとするなら、代わりにリストを使うことを検討すべきです。