Получить строковое значение из HashMap в зависимости от имени ключа

У меня есть HashMap с различными ключами и значениями, как я могу получить одно значение?

У меня есть ключ на карте под названием my_code, он должен содержать строку, как я могу просто получить это, не выполняя итерацию по карте?

До сих пор у меня есть..

   HashMap newMap = new HashMap(paramMap);
   String s = newMap.get("my_code").toString();

Я ожидаю увидеть String, например, "ABC" или "DEF", поскольку это то, что я там ввел, но если я делаю System.out.println(), я получаю что-то вроде java.lang.string#F0454

Извините, я не слишком хорошо знаком с картами, как вы, наверное, можете догадаться;)

Ответ 1

Просто используйте Map#get(key)?

Object value = map.get(myCode);

Здесь вы можете найти учебник по картам: http://java.sun.com/docs/books/tutorial/collections/interfaces/map.html.

Изменить: вы отредактировали свой вопрос со следующим:

Я ожидаю увидеть String, например, "ABC" или "DEF", так как это то, что я там ввел, но если я сделаю System.out.println(), я получу что-то вроде java.lang.String # F0454

Извините, я не слишком хорошо знаком с картами, как вы, наверное, можете догадаться;)

Вы видите результат Object#toString(). Но java.lang.String должен быть уже реализован, если только вы не создали реализацию custom с строчным s в имени: java.lang.String. Если это фактически настраиваемый объект, вам нужно переопределить Object#toString(), чтобы получить "удобочитаемую строку", когда вы делаете System.out.println() или toString() на нужном объекте. Например:

@Override
public String toString() {
    return "This is Object X with a property value " + value;
}

Ответ 2

Если вы храните ключи/значения в виде строк, это будет работать:

HashMap<String, String> newMap = new HashMap<String, String>();
newMap.put("my_code", "shhh_secret");
String value = newMap.get("my_code");

Вопрос в том, что заполняется в HashMap (ключ и значение)

Ответ 3

Если вы будете использовать Generics и определите свою карту как

Map<String,String> map = new HashMap<String,String>();

затем выборка как

 String s = map.get("keyStr"); 

вам не потребуется указывать метод map.get() или call toString для получения значения String

Ответ 4

Ваш вопрос не совсем ясен, я боюсь. У ключа нет "имени"; он не "называет" что-либо в плане карты - это всего лишь ключ и будет сравниваться с другими ключами. Если у вас много разных ключей, я настоятельно рекомендую вам поместить их на разные карты ради здравого смысла.

Если это не поможет, уточните вопрос - желательно с некоторым кодом, чтобы показать, что вы имеете в виду.

Ответ 5

map.get(myCode)

Ответ 6

Важным моментом, который следует отметить здесь, является то, что если ваш ключ является объектом пользовательского класса в java, сделайте его точкой для переопределения метода equals. Поскольку метод HashMap.get(Object key) использует метод equals для сопоставления значения ключа. Если вы не переопределите метод equals, он попытается найти значение просто на основе ссылки на ключ, а не на фактическое значение ключа, и в этом случае он всегда будет возвращать нуль.

Ответ 7

Предположим, вы объявили HashMap как: -

HashMap<Character,Integer> hs = new HashMap<>();

Затем ключ в карте имеет тип Символьный тип данных и значение типа int. Теперь, чтобы получить значение, соответствующее ключу, независимо от типа ключа, типа значения, синтаксиса: -

    char temp = 'a';
    if(hs.containsKey(temp)){
'       int val = hs.get(temp); //val is the value corresponding to key temp
    }

Итак, в соответствии с вашим вопросом вы хотите получить строковое значение, соответствующее ключу. Для этого просто объявите HashMap как HashMap & lt; "datatype of key", "datatype of value" hs = new HashMap & lt;>(); Использование этого сделает ваш код чище, а также вам не нужно преобразовывать результат hs.get("my_code") в строку, так как по умолчанию он возвращает значение строки, если во время ввода один сохранил значение в виде строки.

Ответ 8

Вы можете использовать метод get (Object key) из HashMap. Имейте в виду, что во многих случаях ваш класс ключей должен переопределять метод equals, чтобы быть полезным классом для ключа карты.

Ответ 9

 HashMap<Integer, String> hmap = new HashMap<Integer, String>();
 hmap.put(4, "DD");

Значение, сопоставленное ключу 4: DD