java吧 关注:1,276,603贴子:12,792,650
  • 7回复贴,共1

求助,在线等!!有大神吗,求助撒

只看楼主收藏回复

package practice;
import java.util.HashSet;import java.util.Set;
public class T2 {public static void main(String[] args) {Set<Cell> set = new HashSet<Cell>();Cell c1 = new Cell(1,2);Cell c2 = new Cell(3,2);set.add(c1);set.add(c2);c2 .x = 1;System.out.println(c2.equals(c1));System.out.println(set.remove(c1));System.out.println(set.remove(c2));System.out.println(set);System.out.println(set.contains(new Cell(1,2)));}}
class Cell {int x;int y;
public Cell(int x, int y) {this.x = x;this.y = y;}@Overridepublic boolean equals(Object obj) {System.out.println("AAAAA");return x == ((Cell) obj).x && y == ((Cell) obj).y;}@Overridepublic int hashCode() {return x * 1000 + y;}@Overridepublic String toString() {return x + ":" + y;}}

为什么删不了set中的(1,2),想的头都大了,救命啊


IP属地:浙江1楼2013-04-30 21:24回复
    set.remove(c1); 不要写在system中吧。。


    IP属地:上海2楼2013-04-30 21:50
    收起回复
      2025-09-03 07:58:46
      广告
      不感兴趣
      开通SVIP免广告
      额 给你顶一顶 反正你的问题我没有看清楚 帮你顶


      IP属地:重庆3楼2013-04-30 21:51
      回复
        注意括号


        4楼2013-04-30 22:18
        回复
          当你对set中C2的x重新赋值的时候, set里面就不包含C2那个对象了 具体原因我也解释不清 但我查到javaAPI中说的了一句:(注:如果将可变对象用作 set 元素,那么必须极其小心。如果对象是 set 中某个元素,以一种影响 equals 比较的方式改变对象的值,那么 set 的行为就是不确定的)其中这个不确定的具体什么意思 我也不明白了 总之 以后用到set的时候 尽量不要去改变里面对象的属性


          IP属地:湖南5楼2013-05-01 00:29
          回复


            IP属地:湖南6楼2013-05-01 00:35
            回复