正文
对于自定义的实体类来说,直接使用list.contains()方法是不对,因为没有重写实体类的equals方法,所以在contains()遍历元素并比较的时候,实际上比较的是内存地址。
所以要重写equals方法,例如对于Student学生类,可以重写equals方法来比较学号。
// 重写equals方法
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (!(obj instanceof Student))
return false;
Student stu = (Student) obj;
return xh.equalsIgnoreCase(stu.xh);
}
注意
注意,当元素数量特别大的时候,使用list.contains效率很低速度很慢,这时候建议使用hashmap或者hashset来containsKey来判断是否包含。