Rol*_*all 1 java collections comparable
从这个链接
名称对象是不可变的.在所有其他条件相同的情况下,不可变类型是可行的方法,特别是对于将在集合中用作元素或在地图中用作键的对象.如果您在集合中修改元素或键,这些集合将会中断.我们怎么知道"Name"这个类是不可变的?(上面提到的链接中可见类名)
它们实际上意味着什么"如果你修改它们的元素,那么这些集合会破裂?"
提前致谢.
因为使用可变类,您可以更改基于它们在集合中组织/排序的属性,并且持有者类不会知道它.
认为你可以这样做:
public class Name implements Comparable<Name> {
private String firstname = null
// getters and setters
public int compareTo(Name name) {
// Compare based in firstName
}
}
Run Code Online (Sandbox Code Playgroud)
然后:
Name name1 = new Name("John");
Name name2 = new Name("Mike");
SortedSet<Name> set = new TreeSet<Name>();
set.add(name1);
set.add(name2);
name1.setFirstName("Ralph");
Run Code Online (Sandbox Code Playgroud)
现在,是set订购还是不订购?
以类似的方式,影响hashCode实例的更改中断HashMap和类似,因为在插入/检索对象时执行这些类的第一个是使用bucket基于该值的特定类.