-1
JavaのHashMapの値からキーを取得する簡単な方法がないようです。私が見つけたのは私が理解していないか、値からキーを得る実際のプロセスを説明していないが、使用するツールを説明している。JavaのHashmapの値からキーを簡単に取得するには
JavaのHashMapの値からキーを取得する簡単な方法がないようです。私が見つけたのは私が理解していないか、値からキーを得る実際のプロセスを説明していないが、使用するツールを説明している。JavaのHashmapの値からキーを簡単に取得するには
マップはクイックキー→値検索を持つように設計されていますが、その逆もありません。
BiMap
を使用できます。通常のマップでこれを行う場合は、すべてのエントリを反復処理する必要があります。同じ値を持つ複数のキーがある可能性があるので、その値を考慮する必要があります。
Key
秒からValue
秒までのマップがあるとします。
Map<Key, Value> map = ...;
あなたが書くことができJava 8 streamsを使用して:あなたは、唯一の一致する値が常にあります知っていればうまくいくでしょう
Key key = map.entrySet().stream()
.filter(entry -> entry.getValue() == value)
.map(entry -> entry.getKey())
.findAny()
.orElseThrow(NoSuchElementException::new);
。複数ある場合は、キーのコレクションを構築できます。
Set<Key> keys = map.entrySet().stream()
.filter(entry -> entry.getValue() == value)
.map(entry -> entry.getKey())
.collect(Collectors.toSet());
1つではありません。 HashMapsはキーから値を取得するように設計されています。しかし、遅いO(n)のハッキーな方法があります。 –
同じ値を参照するキーが多数ある可能性があります。 – FatalError
イテレータを使用すると、すべてのキーと値を取得できます。 – Shailesh