2021-11-07

Collection的contains()

public static void main(String[] args) {
    Collection c=new ArrayList();
    String s2=new String("def");
    c.add(s2);
    String s1=new String("abc");
    c.add(s1);
    System.out.println(c.size());
    String x=new String("abc");
    System.out.println(c.contains(x));//底层调用了equals方法
}

String类的equals方法是重写的,比较的是内容。因此,放在集合中的类型(特别自定义时)一定要重写equals方法。

由于contains方法底层调用了equals方法,所以比较的是元素内容而不是地址,因此结果为ture

Collection的remove(Object e)

public static void main(String[] args) {

    Collection c=new ArrayList();

       String s1=new String("hi");

    c.add(s1);

    String s2=new String("hi");

    c.add(s2);

    c.remove(s2);

    System.out.println(c.size());

}

结果为:0

原因:remove也调用了equals方法,所以删除的是一样的内容,Java认为s1和s2是一样的。

注意:自定义类的时候记得重写equals方法!!!

上一篇:切片操作


下一篇:第3天