本帖最后由 司懿卓 于 2013-1-18 19:42 编辑
new R(-2) : 应该是创建了一个 Field 为int 型的对象.
因为,你在添加到集合中时,是 ts.add(new R(-2));这样添加的. new R(-2)没有引用,是临时创建的对象.
所以你在删除时,不能直接删除R (-2). 所以只能创建一个相同的对象用来删除. 就是 ts.remove(new R(-2));
这个应该是set集合, 是无序的,不可重复的,只能通过集合元素本身来访问.
所以,这个集合的 equals 方法和hashCode方法必须被重写,
equals通过Field和哈希值的比较来确定是否是同一个对象..
一般,重写后是new R(-2) == new R(-2) ..
故此,ts.remove(new R(-2)) 就是删除之前添加的那个对象...
Field 是成员变量.. |