2015-03-31 3 views
-2

Какой ключ является лучшим для HashMap?Какие ключи следует использовать для HashMap?

  1. Я использовал только десятичную, каждый ключ - предыдущий ++, но это только моя идея, я не знаю, эффективна ли она.

  2. Я прочитал о hashCode, это значение, обычно используемое для хеш-таблиц, но люди говорят, что не злоупотребляют hashCode() в качестве ключа.

Ожидание ваших ответов и ссылок на ресурсы. Вот фрагмент кода:

Identifier identifier = new Identifier(); 
identifier.setName(getString(currentToken)); 
identifier.setLine(currentLineNumber); 
int key = identifier.hashCode(); 
tableOfIdentifiers.put(key, identifier); 
+2

Почему вы не используете идентификатор напрямую? В чем причина введения хэш-карты? – aioobe

+0

Почему вы используете хеш-код в качестве ключа на карте? Обратите внимание, что хэш-коды вообще не уникальны, поэтому это может вызвать проблемы. – Jesper

ответ

1

крайне редко для кода пользователя, чтобы позвонить hashCode непосредственно за пределами реализаций hashCode методов для пользовательских объектов. В частности, в вашем случае звонок не нужен, потому что HashMap и HashSet полагаются на звонок по телефону hashCode внутри страны.

В вашем примере не должно быть HashMap: должно быть достаточно HashSet.

private Set<Identifier> tableOfIdentifiers = new HashSet<Identifier>(); 
... 
if (!tableOfIdentifiers.add(identifier)) { 
    ... // Duplicate identifier is detected 
} 
0

В идеале для карт используются пары ключевых значений. Ключи должны быть уникальными и понятными. Карты могут иметь повторяющиеся значения для разных ключей, но если использовать хэш-код в качестве ключа, карта перепишет предыдущее значение. Попробуйте использовать логические имена в качестве ключей. может быть empcode, studentRollNumber и т. д.