Maks00088
@Maks00088
Обучаюсь Java/JavaEE /Php/Js

Как правильно использовать HashMap?

При попытке запихнуть в хаш мэп данные , получается запихнуть только последний обьект , почему ?
@BeforeClass
   public static void createCompanies(){
        System.out.println("Setting companies data! ");
       instances.put("company1",adminServiceTesting.createCompany("ORG","Free@88",34553453,"ORG@.com",callForCompany()));
       instances.put("company2",adminServiceTesting.createCompany("PPP","Trading@000",4536579,"PPP@.com",callForCompany()));
   }


Продолжение темы
  • Вопрос задан
  • 421 просмотр
Решения вопроса 1
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Подозреваю что ошибка не в приведенном коде а в другом месте. Где вы инициализируете hashmap?
Сам hashmap это пары ключ-значение. Ключи должны быть уникальными какраз по стандартной или переопределенной hashCode(). Значения могут быть не уникальными.
Т.е. в вашей ситуации:
instances = new HashMap<String,CompanyObject>();
//String - ключ, тип строка, функция hashCode() встроенная, можно не переопределять
//CompanyObject - ваш объект с данными, на hashCode() пофиг ибо он использоваться не будет совсем
instance.put("comp1", objectComp1); //будет добавлен
instance.put("comp2", objectComp1); //будет добавлен т.к. хэш ключа будет другим
instance.put("comp1", objectComp6); //оп, коллизия, в позиции "comp1" будет заменено "Значение"(objectComp1) на (objectComp6)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ruslanys
Для того, чтобы использовать свой тип в качестве ключа в HashMap необходимо переопределить методы equals и hashCode.

Также рекомендуется значения, участвующие в расчете hashCode сделать константами (final).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы