Получить ключ из HashMap, используя значение

Я хочу получить ключ HashMap, используя значение.

hashmap = new HashMap<String, Object>();

haspmap.put("one", 100);
haspmap.put("two", 200);

Что означает, что я хочу функцию, которая примет значение 100 и вернет строку.

Кажется, здесь есть много вопросов, задающих одно и то же, но они не работают для меня.

Возможно, потому что я новичок в java.

Как это сделать?

Ответ 1

Метод put в HashMap определяется следующим образом:

Object  put(Object key, Object value) 

ключ - это первый параметр, поэтому в вашем ключе "один" - это ключ. Вы не можете легко найти значение в HashMap, если вы действительно хотите это сделать, это будет линейный поиск, сделанный вызовом entrySet(), например:

for (Map.Entry<Object, Object> e : hashmap.entrySet()) {
    Object key = e.getKey();
    Object value = e.getValue();
}

Однако, что O (n) и вид поражения цели использования HashMap, если вам только нужно делать это редко. Если вы действительно хотите, чтобы иметь возможность искать ключ или значение часто, ядро ​​Java не имеет ничего для вас, но что-то вроде BiMap из Коллекций Google - это то, что вы хотите.

Ответ 2

Мы можем получить KEY из VALUE. Ниже приведен пример кода_  

 public class Main {
  public static void main(String[] args) {
    Map map = new HashMap();
    map.put("key_1","one");
    map.put("key_2","two");
    map.put("key_3","three");
    map.put("key_4","four");
System.out.println(getKeyFromValue(map,"four")); } public static Object getKeyFromValue(Map hm, Object value) { for (Object o : hm.keySet()) { if (hm.get(o).equals(value)) { return o; } } return null; } }

Надеюсь, это поможет всем.

Ответ 3

  • Если вам это нужно, просто используйте put(100, "one"). Обратите внимание, что ключ является первым аргументом, а значение - вторым.
  • Если вам нужно получить ключ и значение, используйте BiMap (из guava)

Ответ 4

Вы смешали клавиши и значения.

Hashmap <Integer,String> hashmap = new HashMap<Integer, String>();

hashmap.put(100, "one");
hashmap.put(200, "two");

Затем

hashmap.get(100);

даст вам "один"

Ответ 5

У вас все наоборот. 100 должен быть первым параметром (это ключ), а "один" должен быть вторым параметром (это значение).

Прочитайте javadoc для HashMap и это может вам помочь: HashMap

Чтобы получить значение, используйте hashmap.get(100).

Ответ 6

public class Class1 {
private String extref="MY";

public String getExtref() {
    return extref;
}

public String setExtref(String extref) {
    return this.extref = extref;
}

public static void main(String[] args) {

    Class1 obj=new Class1();
    String value=obj.setExtref("AFF");
    int returnedValue=getMethod(value);     
    System.out.println(returnedValue);
}

/**
 * @param value
 * @return
 */
private static int getMethod(String value) {
      HashMap<Integer, String> hashmap1 = new HashMap<Integer, String>();
        hashmap1.put(1,"MY");
        hashmap1.put(2,"AFF");

        if (hashmap1.containsValue(value))
        {
            for (Map.Entry<Integer,String> e : hashmap1.entrySet()) {
                Integer key = e.getKey();
                Object value2 = e.getValue();
                if ((value2.toString()).equalsIgnoreCase(value))
                {
                    return key;
                }
            }
        }   
        return 0;

}
}

Ответ 7

если вы хотите получить "ОДИН" путем предоставления в 100, тогда

инициализировать хэш-карту на

hashmap = new HashMap<Object,String>();

haspmap.put(100,"one");

и получить значение на hashMap.get(100)

надеюсь, что это поможет.