重複の可能性:
Javaハッシュマップ:値からキーを取得する方法は?
HashMapに値として特定の整数変数が含まれていることを知っています。この値に関連付けられているキーを取得するにはどうすればよいですか?
重複の可能性:
Javaハッシュマップ:値からキーを取得する方法は?
HashMapに値として特定の整数変数が含まれていることを知っています。この値に関連付けられているキーを取得するにはどうすればよいですか?
このコードはそれを行います:
public List<Object> getKeysFromValue(Map<?, ?> hm, Object value){
List <Object>list = new ArrayList<Object>();
for(Object o:hm.keySet()){
if(hm.get(o).equals(value)) {
list.add(o);
}
}
return list;
}
どうぞ:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test
{
public static void main( String args[] )
{
Map < Integer , Integer > map = new HashMap < Integer , Integer >();
map.put( 1 , 2 );
map.put( 3 , 4 );
map.put( 5 , 6 );
map.put( 7 , 4 );
List< Integer > keys = new ArrayList< Integer >();
Integer value = 4;
for ( Integer key : map.keySet() )
{
if ( map.get( key ).equals( value ) )
{
keys.add( key );
}
}
System.out.println( value + " has been found in the following keys: " + keys );
}
}
出力は次のとおりです。
4 has been found in the following keys: [7, 3]
Set<Map.Entry> entries = hashMap.entrySet();
for(Map.Entry entry : entries) {
if(entry.getValue().equals(givenValue)) {
return entry.getKey();
}
}
ハッシュマップは、キーを知っている場合に値を見つけるのに役立ちます。値からキーが本当に必要な場合は、すべての項目を繰り返し処理し、値を比較してから、キーを取得する必要があります。
これを試してみてください....短くて甘い方法...
HashMap<String, Integer> list = new HashMap<String,Integer>();
for (Map.Entry<String, Integer> arr : list.entrySet()){
System.out.println(arr.getKey()+" "+arr.getValue());
}
キーごとにマップを2回クエリしないため、entrySetのループが高速になります。
public Set<Object> getKeysFromValue(Map<Object, Integer> map, int value) {
Set<Object> keys = new HashSet<Object>();
for (Map.Entry<Object, Integer> entry:map.entrySet()) {
//if value != null
if (entry.getValue() == value) {
keys.add(entry.getKey());
}
}
return keys;