目录
正常运行没有问题的情况
错误的使用情况
正确的使用方式
出错原因:
正常运行没有问题的情况
java封装类,比如String,Integer等等
举个粒子:
public static void main(String[] args) {
List list = new ArrayList();
//User u1 = new User(1, "娜娜");
String u1="1";
(u1);
String u2="1";
//User u2 = new User(1, "娜娜");
((u2));
}
这是true的
错误的使用情况
public static void main(String[] args) {
List list = new ArrayList();
User u1 = new User(1, "娜娜");
//String u1="1";
(u1);
//String u2="1";
User u2 = new User(1, "娜娜");
((u2));
}
实体类
@Data
public class User {
private Integer id;
private String name;
public User(Integer id, String name) {
= id;
= name;
}
/*@Override
public boolean equals(Object obj) {
User u = (User) obj;
return ().equals(id) && ().equals(name);
}*/
}
返回是flase
正确的使用方式
@Data
public class User {
private Integer id;
private String name;
public User(Integer id, String name) {
= id;
= name;
}
@Override
public boolean equals(Object obj) {
User u = (User) obj;
return ().equals(id) && ().equals(name);
}
}
或者使用lombok插件的
@Data
@EqualsAndHashCode
public class User {
private Integer id;
private String name;
public User(Integer id, String name) {
= id;
= name;
}
/*@Override
public boolean equals(Object obj) {
User u = (User) obj;
return ().equals(id) && ().equals(name);
}*/
}
运行结果为true
出错原因:
public boolean contains(Object o) {
return indexOf(o) >= 0;
}
public int indexOf(Object o) {
if (o == null) {
for (int i = 0; i < size; i++)
if (elementData[i]==null)
return i;
} else {
for (int i = 0; i < size; i++)
if ((elementData[i]))
return i;
}
return -1;
}
Object的equals方法
public boolean equals(Object obj) {
return (this == obj);
}
对比地址,由于是新建的对象,对象地址不可能一样,所以为false