在开发的过程中发现ArrayList移除不了一个数据:直接说原因 删除目标的实体未实现equals方法。
正如如下代码:
public class TestRemove {
public static void main(String[] args) {
Person person = new Person("li");
Person person2 = new Person("li");
ArrayList<Person> persons= new ArrayList<Person>();
persons.add(person);
persons.remove(person2);
System.out.println(persons.size());
}
}
class Person {
private String name ;
public Person() {
}
public Person(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
运行结果:1
在代码中重写方法equals()
@Override
public boolean equals(Object obj) {
if(Person.class.isInstance(obj) ){
Person person =(Person)obj;
return person.getName().equals(this.getName());
}else{
throw new RuntimeException("传入参数异常");
}
}
运行结果:0