Ответ на этот SO объясняет проблему, с которой я столкнулся: HashSet.remove() и Iterator.remove() не работают
По сути, как только я добавляю что-то в HashSet, если я изменяю любое из его полей, то набор проваливает любые тесты на равенство с набором, содержащим объект с точно такими же полями, поскольку хэш-код, в котором он хранился, был для того времени, когда у него были установлены другие поля.
Итак, поскольку этот ответ объясняет, что происходит, что было бы хорошим обходным решением для этого, чтобы иметь одновременно уникальность использования набора и возможность изменять внутренние поля объектов в наборе? Или это просто невозможно?