Java 中的contains方法解析

contains方法解析

深入Collection集合的contains方法

  • boolean contains(Object o) 如果此集合包含指定的元素,则返回 true
  • contains方法是用来判断集合中是否包含某个元素的。
  • 它在底层调用了equals方法进行比对。
public class CollectionTest04 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c = new ArrayList();
        //向集合中存储元素

        String s1= new String("abc");
        c.add(s1);
        String s2 = new String("def");
        c.add(s2);


        //创建新的对象
        String x = new String("abc");
        //集合中是否包含X?
        System.out.println(c.contains(x));//判断集合中是否包含“abc”,true,contains底层使用了equals()

    }
}

Collection接口中remove方法和contains方法底层都会调用equals方法。它们都需要重写了equals方法。

/*
* 测试contains方法
* 结论:存放在一个集合中的类型,一定要重写equals方法。
* */
public class CollectionTest05 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c = new ArrayList();
        //创建用户对象
        User u1=new User("jack");
        User u2=new User("jack");
        c.add(u1);
        //判断集合中是否包含u2
       // System.out.println(c.contains(u2));//false,没有重写equals方法
        System.out.println(c.contains(u2));//true,重写了equals方法,比较多的时候会比较内容

        Integer x=new Integer(10000);
        c.add(x);
        Integer y=new Integer(10000);
        System.out.println(c.contains(y));//true
        //Integer类中equals方法重写了

        Collection cc = new ArrayList();
        String s1 = new String("hello");
        cc.add(s1);
        String s2 = new String("hello");
        cc.remove(s2);// remove中也调用了equals方法
        System.out.println(cc.size());//0个元素

    }
}

class User{
    private String name;
    public User(){}
    public User(String name){
        this.name=name;
    }
    //重写equals方法
    //将来调用equals方法的时候,一定是调用这个重写的equals方法。

    //这个equals方法的比较原理是:只有姓名一样就表示同一个用户。
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(name, user.name);
    }

}
posted @ 2024-02-01 22:26  十几里路  阅读(423)  评论(0)    收藏  举报