Java_List类中的remove()方法

remove(object o)方法删除的是 XXX.equals(XX)为true的元素(或者 .contains(Object o) 返回true的情况下删除成功)

在未重写equals方法的情况下,用默认的,默认的equals方法时比较两个对象的存储位置是否一致,以确定相等,这显然不符合业务需要。
我们需要重写,让其根据id等少数几个字段判断(有些方法会自动调用equals,然后根据equals返回的结果再执行相应的操作,比如list的removeAll,为了符合业务需要需要重写)

Teacher t1 = new Teacher("lisa");
        Teacher t2 = new Teacher("lili");
        Teacher t3 = new Teacher("an");

        List<Teacher> list = new ArrayList<>();
        list.add(t1);
        list.add(t2);
        list.add(t3);

        System.out.println(list);

        list.remove(t1);
        System.out.println(list);
        list.remove(new Teacher("an"));  //执行结果:没有删除"an"
        System.out.println(list);

想要删除“an”,重写equals方法就可以。

 @Override
    public boolean equals(Object o) {
    
    
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Teacher teacher = (Teacher) o;
        return Objects.equals(name, teacher.name);
    }

猜你喜欢

转载自blog.csdn.net/qq_45915957/article/details/109696085