Java中的ArrayList对象
当我使用ArrayList时
ArrayList<item> List = new ArrayList<item>();
Item a = new Item(1,"Book");
Item b = new Item(2,"Shoes");
List.add(a);
List.add(b);
Item c = new Item(1,"Book");
if(List.equals(c)) //Will this code return true?
如果没有,有人能说出什么样的案例列表吗。等于(c)将返回true。因为一个项目可以有很多属性,id、名称、价格。它是否检查引用名称?或者比较属性
# 1 楼答案
不,它将返回false,因为c与list不相等。Equals表示等于:),所以您要使用contain方法:
更多详细信息:在java source中,当您在ArrayList上调用它时,您可以找到确切的equals含义:
# 2 楼答案
来自sun的文档,关于相等
查克这里http://download.oracle.com/javase/1.4.2/docs/api/java/util/List.html#equals(java.lang.Object)
比较指定对象与此列表是否相等。当且仅当指定对象也是列表、两个列表的大小相同且两个列表中所有对应的元素对相等时,返回true。(如果(e1==null?e2==null:e1.equals(e2)),则两个元素e1和e2相等。)换句话说,如果两个列表包含相同顺序的相同元素,则它们被定义为相等。此定义确保equals方法在列表接口的不同实现中正常工作
# 3 楼答案
首先,您必须使用
contains
方法,而不是equals
Contains
检查列表中是否有项目。但是equals
检查一个列表是否等于另一个列表现在,对于您的问题,Contains将寻找equals方法(从
Object
继承的方法)的实现。默认情况下,它比较引用。如果要比较属性,请覆盖它以使用自定义比较逻辑