JAVA基础List的contains()方法遇到的问题
两个逻辑上相等的自定义对象obj1和obj2,用ArrayList对象list加入obj1对象,list对象调用contains方法判断是否包含obj2对象,返回值是false,不应该是true吗,两个对象逻辑相等啊。而我用两个逻辑相等的String对象(new两个)就会得到true为什么??
public class Test {
private String value=null;
public Test(String value) {
this.value = value;
}
public boolean equals(Test o){
if (o==this){
return true;
}
if (o instanceof Test){
Test t=(Test) o;
return value.equals(t.value);
}
return false;
}
public static void main(String[] args){
List list=new ArrayList();
Test test1=new Test("obj");
Test test2=new Test("obj");
list.add(test1);
System.out.println(test1.equals(test2));//true
System.out.println(list.contains(test2));//false
/**
* 换两个逻辑上相等的String类对象就没问题,contains()输出true
*/
}
}
public class Test {
private String value=null;
public Test(String value) {
this.value = value;
}
public boolean equals(Test o){
if (o==this){
return true;
}
if (o instanceof Test){
Test t=(Test) o;
return value.equals(t.value);
}
return false;
}
public static void main(String[] args){
List list=new ArrayList();
Test test1=new Test("obj");
Test test2=new Test("obj");
list.add(test1);
System.out.println(test1.equals(test2));//true
System.out.println(list.contains(test2));//false
/**
* 换两个逻辑上相等的String类对象就没问题,contains()输出true
*/
}
}
...全文
相关推荐
10个Java经典的List面试题!.zip
10个Java经典的List面试题!.zip
java零基础自学之 Java集合类
java零基础自学之 Java 集合类 java零基础自学之 Java集合类
java集合继承关系图分享
主要为大家详细介绍了java集合继承关系图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
判断以逗号分隔的字符串中是否包含某个数的实例
下面小编就为大家带来一篇判断以逗号分隔的字符串中是否包含某个数的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
java容器(持有对象)
归纳了java中常用容器包括List、set、map等


Java SE
