Создайте объект для моделирования вашего ключа.Например, class PersonKey { String homeTown, sex, eyeColour }
(методы получения и установки для краткости опущены)
Реализация метода equals
и hashCode
для этого объекта.
Используйте этот объект в качестве ключа в вашем Map
.
Либо удалите атрибуты из вашего Person
объекта, либо замените их ссылкой на ваш PersonKey
объект.
Кроме того, рассмотрите возможность сделать тип вашей карты следующим, т.е. выне нужно указывать тип Set
, который вы используете в качестве ключа к вашей карте.
Map<String, Set<Person>> = new HashMap<String, Set<Person>>();
И, если вы используете Set<Person>
, вам придется переопределить equals
и hashCode
для Person
, в противном случае Set
не может правильно определить, представляют ли два объекта Person
одно и то же лицо или нет, что необходимо для того, чтобы коллекция содержала только уникальные элементы.