Я взял класс Employee
и создал Map с Integer, объект Employee в качестве пары ключ-значение
вот моя карта
Map<Integer,Employee> map = new HashMap<Integer,Employee>();
Класс Employee является классом bean-компонента и имеет такие свойства, как имя, идентификатор, обозначение;
карта позволяет уникальные ключи. но если вы не хотите разрешать повторяющиеся значения
на вашей карте вы должны переопределить метод равных в классе бобов.
@Override
public boolean equals(Object object){
if (object == null) return false;
if (object == this) return true;
if (this.getClass() != object.getClass())return false;
Employee employee = (Employee)object;
if(this.hashCode()== employee.hashCode())return true;
return false;
}
и при добавлении значения ключа к карте необходимо использовать метод содержит
if(!map.containsValue(map.get(id))){
map.put(id,employee);
}
containsValue
внутренне вызывает метод equals()
и, следовательно, вы перебираете метод равных
он будет проверять каждое значение (объект) с предыдущими объектами, и если хеш-коды одинаковы
возвращает true означает, что оба объекта являются одинаковыми.