Что такое ключевой объект (использовать в hashmap)? - PullRequest
5 голосов
/ 29 ноября 2011

Может ли кто-нибудь объяснить, что именно является ключевым объектом для использования в hashmap? Есть метод: "положить (ключ объекта, значение объекта) Связывает указанное значение с указанным ключом в этой карте. "

так что ключ - это просто какой-нибудь объект, который вы хотите? И под значением они подразумевают другой объект или как атрибут. Просто нужно какое-то дальнейшее объяснение, как я запутался! Спасибо большое

Ответы [ 3 ]

3 голосов
/ 13 декабря 2011

Вы должны прочитать , что такое хэш-карта . В общем, хеш - это структура данных для эффективного хранения произвольных данных ( значения ) в таблице.

Общая проблема хранения информации в любой структуре заключается в том, как быстро снова просмотреть данные, как только они попадут в структуру. Хеш решает эту проблему с помощью ключей . Ключ значения определяет, где в таблице будет храниться значение, с помощью некоторой хеш-функции . Ключ используется в хэше так же, как индекс используется в массиве:

array[index] => some_value
hash{key} => some_value

В случае «put (ключ объекта, значение объекта)» объект «значение» - это данные, которые вы хотите сохранить, а объект «ключ» - это то, что вы будете использовать для возврата данных из хэш:

MyObject myKey = new MyObject( ... );
MyOtherObject myValue = new MyOtherObject( ... );
...
myHash.put( myKey, myValue );  // add myValue to the hash
...
MyOtherObject data = myhash.get( myKey );  // get myValue out of the hash
0 голосов
/ 27 декабря 2011

Ключ должен быть чем-то, что не изменяется (сильно) с течением времени, является уникальным (внутри этой карты) и имеет некоторую значимую связь со значением.Например, SSN, имя, номерной знак или почтовый индекс.Но в основном все, что имеет для вас смысл.

0 голосов
/ 29 ноября 2011

так является ли ключ просто любым объектом, который вы хотите?

В общем, да.

Однако вам нужно быть осторожным с реализацией объектовиспользовать в качестве ключей на карте.Они должны быть неизменными и переопределять equals() и hashCode().

...