С этого linkКоллекции перерыв
Название объекты являются неизменяемыми. При прочих равных условиях неизменяемые типы - это путь, особенно для объектов, которые будут использоваться как элементов в наборах или в виде ключей в Картах. Эти коллекции будут разбиты, если вы измените свои элементы или ключи, пока они находятся в коллекции. Как мы узнаем, что класс «Имя» неизменен? (название класса видно по вышеуказанной ссылке)
Что они на самом деле означают, что «коллекции сломаются, если вы измените их элементы?»
Заранее спасибо.
Я думаю, что здесь главное, что оператор относится только к свойствам, которые приписывают методам equals, hascode и compareTo. Другие свойства могут быть изменены без нарушения коллекций. Текст, прерванный в вопросе, является неточным. –
@JoeriHendrickx Если вы определяете 'setter' для любого свойства, тогда вы рискуете, что кто-то будет использовать его в пользовательском' Comparator' для заказа коллекции. Таким образом, вы не можете сказать в общем, что «достаточно, чтобы изменить атрибуты« compareTo/equals/hashCode »не разрешены только атрибуты. – SJuan76
действительно, вы правы. Но, честно говоря, это не такой общий случай. Говорить, что все элементы в коллекции должны быть неизменными, тем не менее будет слишком широким. –