首先定义Person类,添加两个属性String-name和Integer-age;重写有参构造、toString()、equals()、hasCode()
public class Person {
private String name;
private Integer age;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return Objects.equals(name, person.name) && Objects.equals(age, person.age);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
接着MyArrayList<E>继承ArrayList<E>,并重写add(E e):bollean
public class MyArrayList<E> extends ArrayList<E> {
@Override
public boolean add(E e) {
//this指的是本类(MyArrayList)
Iterator<E> iterator = this.iterator();
while (iterator.hasNext())
//Objects.equals用于比较两个对象的字符串内容是否相同
//,前提是(集合中的)元素重写了equals方法
if (Objects.equals(iterator.next(), e))
return false;
//经过equals判断不相同,就调用父类(ArrayList)的add方法
return super.add(e);
}
}
在main()中创建自己的数据,调用自己的集合类
public static void main(String[] args) {
//1.使用自定义的集合
ArrayList<Person> people = new MyArrayList<>();
//2.创建三个Person对象实例
Person zhangsan = new Person("张三", 12);
Person lisi = new Person("lisi", 12);
Person wangwu = new Person("wangwu", 12);
Person zhangsan1 = new Person("张三", 12);
//3.调用add方法(因为在1.中使用的是自己的集合类,所以会进行equals判断)
people.add(zhangsan);
people.add(lisi);
people.add(wangwu);
people.add(zhangsan1);
//4.1看看集合中有几个元素
System.out.println("people1.size() = " + people.size());
//4.2集合转数组,再转String
System.out.println("people.toArray().toString() = " + Arrays.toString(people.toArray()));
}
康康自己的集合吧