ハッシュマップから反復せずに1つのエントリを取得する方法 質問する

ハッシュマップから反復せずに1つのエントリを取得する方法 質問する

Entry<K,V>キーが不明な場合に、反復処理せずに HashMap から1 つだけを取得するエレガントな方法はありますか。

エントリーの順番は重要ではないので、次のように言うことができます。

hashMapObject.get(zeroth_index);

このようなインデックスによる取得方法は存在しないことは承知しています。

以下に述べるアプローチを試した場合、ハッシュマップのすべてのエントリセットを取得する必要がある。

for(Map.Entry<String, String> entry : MapObj.entrySet()) {
    return entry;
}

ご提案をお待ちしております。

編集: 要件を満たす他のデータ構造を提案してください。

ベストアンサー1

マップは順序付けられていないため、「最初のエントリ」というものは存在しません。また、Map(またはHashMap) に get-by-index メソッドが存在しないのもこのためです。

次のようにすることができます:

Map<String, String> map = ...;  // wherever you get this from

// Get the first entry that the iterator returns
Map.Entry<String, String> entry = map.entrySet().iterator().next();

(注: 空のマップのチェックは省略されています)。

コードはマップ内のすべてのエントリを取得するわけではなく、見つかった最初のエントリですぐに戻ります (ループから抜け出します)。

この最初の要素のキーと値を印刷するには:

System.out.println("Key: "+entry.getKey()+", Value: "+entry.getValue());

注: 呼び出しは、iterator()マップ全体を反復処理することを意味するものではありません。

おすすめ記事