两个相同的数组,但包含的方法不起作用

我有一个短信类:


public class SmsClass {


private String numberInside;

private String name;



public SmsClass( String numberInside ,String name) {

    this.numberInside = numberInside;

    this.name = name;

}

我尝试制作两个相同ArrayList的课程:


SmsClass SmsClass3 = new SmsClass("name" , "19");

SmsClass SmsClass4 = new SmsClass("name" , "19" );


ArrayList<SmsClass> c1 = new ArrayList<>();

ArrayList<SmsClass> c2 = new ArrayList<>();


c1.add(SmsClass1);

c1.add(SmsClass2);

c2.add(SmsClass3);

c2.add(SmsClass4);

我有.contains方法问题。当我运行此代码时:


for(int i = 0 ; i < c1.size() ; i++){

    if (c1.contains(c2.get(i))) {

        System.out.println("victory");

    }

}

我有相同的数组,但没有找到。


ITMISS
浏览 169回答 3
3回答

皈依舞

您尚未定义equals(并隐式hashCode),因此contains无法比较您的对象。如果您不覆盖这两种方法:Object::equals将使用(仅使用参考比较,通过==)和hashCode(在 java-8 中)将计算为伪随机数(基于 Marsaglia XOR 移位算法)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java