当对象是可变的时,TreeSet、HashSet或LinkedHashSet会如何表现?我无法想象它们会以任何方式工作?
如果在添加对象后修改对象,列表的行为是什么?
除了使用链表或数组并每次迭代进行操作之外,是否有更好的选项来处理可变对象的集合(需要排序/索引等)?
当对象是可变的时,TreeSet、HashSet或LinkedHashSet会如何表现?我无法想象它们会以任何方式工作?
如果在添加对象后修改对象,列表的行为是什么?
除了使用链表或数组并每次迭代进行操作之外,是否有更好的选项来处理可变对象的集合(需要排序/索引等)?
如果集合中的对象在插入后其hashCode和比较方法的行为发生更改,那么可变性只影响集合本身。
应对这种情况的方法是从集合中删除对象,并在更改后重新添加它们,以便对象从集合的角度看是不可变的。
另一种不太高效的方法是保持一个包含所有对象的集合,并在需要将集合排序或索引时创建TreeSet/HashSet。这并不是一个真正的解决方案,当对象经常更改且需要同时进行映射访问时。