JAVA的contains怎么用

2024-12-28 20:19:05
推荐回答(5个)
回答1:

你new的Card对象和你加到list里的是不同的对象
你可以测试一下:
Card a=new Card(Card.SPADE,Card.ACE);

Card b=new Card(Card.SPADE,Card.ACE);

System.out.println(a==b);

输出的一定是false

想要输出ture要这样写:
Card ace = new Card(Card.SPADE,Card.ACE);
cards.add(ace);

System.out.println(cards.contains(ace));

回答2:

contains方法比较的是两个对象,
但是上边的代码可以看出是两个不同的对象(都是从新new出来的)

如果你想要一样,那么你需要重写Card类的equals方法,应该contains是通过equals来判断两个对象是否相同的。
重写比如
只要Card.TEN这个属性相同就当作两个对象相同。
if(Card.TEN这个属性相同)return true;

回答3:

cards : 放Card对象的集合,若干个Card对象
ace : 表示某一个Card对象

cards.contains(ace) : 表示这若干个Card对象集合里面是否有ace,有则true,没有则false

回答4:

因为是你自定义的类,所以Card类需要 重写 equals方法。具体操作:

在Card类中,添加如下代码 

@Override
public boolean equals(Object o) {
    if (null==o) {
        return false;
    }
    
    if (o instanceof Card) {
        //写你要判断两个对象相等的条件
    }
}

回答5:

这个问题要详细解释起来的话很复杂,你在LinkedList中加入new Card(Card.SPADE,Card.ACE)(你代码的第5行)对象与你代码中第七行中新建的对象ace已经不是同一个对象了(对象的内存空间不同),有个方法可以解决你这问题,你在Card对象中重写equals方法。

你或许会疑惑LinkedList中保存String对象,Integer等对象时为什么contains方法就有效了呢!因为Java已经重写了String等对象中的equals方法。