通过重写equals从而改变collection接口中的remove方法。
本次我需要实现在remove中使用new一个新的对象,这个对象和集合中一个对象的name和age相等,从而做到删除集合中的这个对象。
代码如下
先创建一个student001类并加入方法。
package com.kui.Gather;
public class Student001 {
private String name;
private int age;
public Student001() {
}
public Student001(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student001{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
然后创建一个collection对象和两个student001对象。将两个student001对象添加到集合中并打印集合中的元素个数和集合的内容。
package com.kui.Gather;
import java.util.ArrayList;
import java.util.Collection;
public class Collection002 {
public static void main(String[] args) {
Collection itt=new ArrayList();
Student001 s1 = new Student001("刻琴",16);
Student001 s2 = new Student001("凯亚",19);
itt.add(s1);
itt.add(s2);
System.out.println("元素个数"+itt.size());
System.out.println(itt.toString());
然后在student001中重写equals
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
else if (obj == null) {
return false;
}
else if (obj instanceof Student001) {
Student001 s = (Student001) obj;
if (this.name.equals(s.getName())&&this.age==s.getAge()){
return true;
}
}
return false;
}
再在main方法中使用remove方法删除s2这个对象并打印集合中的元素个数和集合的内容。(通过new一个新的对象的方式删除)
import java.util.ArrayList;
import java.util.Collection;
public class Collection002 {
public static void main(String[] args) {
Collection itt=new ArrayList();
Student001 s1 = new Student001("刻琴",16);
Student001 s2 = new Student001("凯亚",19);
itt.add(s1);
itt.add(s2);
System.out.println("元素个数"+itt.size());
System.out.println(itt.toString());
System.out.println("--------------------------------------");
itt.remove(new Student001("凯亚",19));
System.out.println("元素个数"+itt.size());
System.out.println(itt.toString());
}
}
运行结果:
元素个数2
[Student001{name='刻琴', age=16}, Student001{name='凯亚', age=19}]
--------------------------------------
元素个数1
[Student001{name='刻琴', age=16}]
Process finished with exit code 0