Я хотел бы получить исходный объект ключа в HashMap на Java, что это лучший способ сделать это?Получить ключевой объект из HashMap в Java
Например
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
Integer keyObj = new Integer(10);
Integer valueObj = new Integer(100);
// And add maybe 1 million other key value pairs here
//... later in the code, if I want to retrieve the valueObj, given the value of a key to be 10
Integer retrievedValueObj = map.get(10);
//is there a way to retrieve the original keyObj object with value 10 from map?
В принципе, пользователь может запросить любое значение ключа здесь только для ключевого объекта, 10 является только примером. Некоторые комментарии говорят: «У вас уже есть объект x, почему вы хотите его получить?» Ну, это то же самое, что сказать: «У вас уже есть объект value, почему вы хотите его получить?» Такова цель структуры, хранения и извлечения данных HashMap.
Извлечение объекта значения легко, но кажется, что многие люди не знают, как получить ключевой объект, поэтому этот вопрос определенно полезен, и я не получаю эти голоса по вопросу b/c, они не знают, как сделать это. Именно поэтому нам нужно научиться этому у кого-то, кто знает, как это сделать.
Кажется, что многие люди не понимают, почему я хочу достичь объекта 10 и спросить, почему? почему не просто значение 10. Это просто упрощенная модель.
Хорошо, позвольте мне привести немного контекста. KeyObj - это данные в другой структуре данных, и мне нужна точная ссылка на этот оригинальный ключевой объект. Скажем, есть связанный список всех значений ключа, и если я хочу удалить определенный узел в связанном списке.
Я очень удивлен, увидев, что некоторые люди не любят вопрос и думают, что это тривиально для значения «10». У меня есть причина спросить. Меня интересует не только значение «10», но и местоположение памяти, то есть ссылка на Java этого объекта «10». В памяти может быть много «10». Но этот точный объект - это то, что я хочу получить.
Ниже представлен подход к подходу итератора (O (n). Но я ищу O (1) извлечение ключа OBJECT с учетом значения ключа.
Один из способов я могу думать о том, чтобы сохранить ключевой объект в стоимости, а также, как
class KeyAndValue {
public Integer key;
public Integer value;
public KeyAndValue(Integer key, Integer value) {
this.key = key;
this.value = value;
}
}
map<Integer, keyAndValueL> map = new map<Integer, keyAndValueL>();
Integer x = new Integer(10);
map.add(x, new KeyAndValue(x, 100));
//then I can retrieve the reference of x, given value of key 10
Integer newKeyObj = map.get(10).key;
, но этот подход использует больше памяти и выглядит как хак для меня. Мне интересно, есть ли более элегантный способ в Java.
Большое спасибо!
Это действительно не имеет никакого смысла. Почему вы хотите получить «ключ» с карты, когда вы уже знаете это ?! – SudoRahul
Вы имеете в виду получить все ключи за заданное значение? Зайдите http://stackoverflow.com/questions/1383797/java-hashmap-how-to-get-key-from-value –
Возможно, вам нужно 'map.keySet()' – Trying