HashMap (или карта вообще) использует пары ключ/значение. Когда вы добавляете что-то на карту, вы должны указать ключ, и именно этот ключ используется позже при извлечении значения. На основе реализации HashMap при наличии ключа извлечение значения выполняется за время O(1).
containsValue — полезный метод для проверки того, что HashMap содержит искомое значение, но я действительно не понимаю, почему вы используете его для получения искомого значения??
Правильный способ использования карты будет выглядеть примерно так:
HashMap<Integer, Object> myMap = new HashMap<Integer, Object>();
myMap.put(1, object1);
myMap.put(2, object2);
myMap.put(3, object3);
Теперь вы можете получить свои объекты, выполнив:
Object myObject = myMap.get(1);
Если вы сделали:
моя карта.containsValue (1);
это вернет false, поскольку 1 является ключом, а не значением. Вы можете сделать:
myMap.containsKey(1);
если вы просто хотите знать, существует ли он, но нет проблем с вызовом:
Object myObject = myMap.get(99);
он просто вернул бы ноль, если бы не было ключа, 99.
Итак, суть в том, что вы правы, нет смысла использовать containsValue, когда вы пытаетесь получить значение. Используйте get или containsKey, если вы хотите сначала проверить существование.
person
DaveJohnston
schedule
29.03.2010