меня есть класс Abc, допустим в нем 3 поля - a, b, c.
У меня не должно быть ни в каком случае никаких повторений a и b, так что хешсет и еквалс задействует именно их.
Есть Set типизированный Abc. Мне так сказать надо замержить его с другой коллекцией Abc.
В чем вопрос? Вопрос в том, чтобы заменить еквливалентные Abc, у которых c будет различаться, а те, у которых он одинаковый, не трогать
Есть конечно идея, получить итератор и оттуда перебором получить еквивалентный Abc, получить c, и сравнить, нужна ли замена или нет, но выглядит немного криво
Стримами обработать может с пропуском элементов, которые не нужно трогать? Есть .range, который может принять в себя стримы двух коллекций
я сейчас подумал о том, чтобы equals и hashcode по всем полям сделать
хм, сейчас это посмотрю тоже
addAll, причем у исходного сета иквалс перееопределяется так что Abc равны при разных c
addAll с другой коллекцией не тронет никакие объекты равные по иквалс, то есть будет игноровать равные Аб с другим с Или нам их надо добавить новые Абс а удалить старые, сохранив в сете уникальность по Ab? Копайте в сторону пересечения коллекций - методы removeAll, retainAll. removeAll уберет из сета все Ab(любой с) - а addAll заместит их новыми из коллекции
это понятно, я уже +- нашел решение, не так хорошо как хотелось, но пойдет
Можно использовать промежуточную коллекцию.
примерно так сделал
Обсуждают сегодня