Для HashMap, будет ли реализация hashCode () для значения помощи, если я буду искать только по ключу? - PullRequest
3 голосов
/ 30 октября 2010

Я использую Java 6. Для простоты все будет публично.

Предположим, у меня есть этот простой класс.

public class A{
    public String name;
    public String data;
}

Я хочу поместить свои объекты класса A в HashMap.Я буду использовать поле name в качестве ключа и весь объект в качестве значения.

Я буду искать объект на этой карте только по name.

.для класса A нужно ли реализовать hashCode и equals для поиска целей?Это ускорит поиск вообще?Я знаю, что это поможет для наборов, но я не уверен насчет HashMaps, ключом которых является просто строка.

Ответы [ 3 ]

5 голосов
/ 30 октября 2010

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

2 голосов
/ 30 октября 2010

Я не думаю, что вам нужно беспокоиться о реализации двух методов, если вы просто используете String в качестве ключа. Однако вам необходимо переопределить их оба, если вы планируете использовать класс A в качестве ключа

1 голос
/ 30 октября 2010

Вам нужно только поддерживать hashCode и equals для ключей в HashMap. Поскольку ключ является строкой, а не A, их не нужно реализовывать - они не привыкнут.

...