Подозреваю что ошибка не в приведенном коде а в другом месте. Где вы инициализируете 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)