Student a = new Student("zhangsan");
Student b = new Student("zhangsan");
Student c = new Student("lisi");
ArrayList<Object> objects = Lists.newArrayList();
objects.add(a);
Set<Object> objects1 = new HashSet();
objects1.add(a);
objects1.add(b);
System.out.println(objects1.size());
System.out.println(objects.contains(b));
public class Student {
private String name;
public Student(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;}
if (o == null || getClass() != o.getClass()){
return false;}
Student student = (Student) o;
return Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
1.往set中存储同一个对象,属性值且向同时,如果未同时重写equals 和 hashcode 则可存储两条数据
2.往list中存入对象a contains 对象b ,重写hashcode 对结果无影响,重写equals 如果重写,则包含,不重写 不包含