深入学习contains,remove方法

深入学习contains,remove方法
boolean contains(Object o)
判断集合中是否包含某个对象o,如果包含返回true,反之返回false

contains方法是用来判断集合中是否包含某个对象的方法,
那么它在底层是怎么判断集合中是否包含的呢?

调用了equals方法进行对比,
equals方法返回true,就表在这里插入代码片示包含了这个对象

package Collection;

import java.util.ArrayList;
import java.util.Collection;
/*
深入学习contains,remove方法
boolean contains(Object o)
判断集合中是否包含某个对象o,如果包含返回true,反之返回false

contains方法是用来判断集合中是否包含某个对象的方法,
那么它在底层是怎么判断集合中是否包含的呢?

调用了equals方法进行对比,
equals方法返回true,就表示包含了这个对象
 */

public class ContainTest01 {
    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);
        System.out.println("集合的元素个数:"+c.size());
        //创建一个新对象
        String x=new String("abc");
        //c集合中是否包含x?
        System.out.println(c.contains(x));  //true

    }
}

在这里插入图片描述

结论:存放在一个集合中的类型,必须重写equals方法

package Collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Objects;

/*
结论:存放在一个集合中的类型,必须重写equals方法
 */
public class Collectiontest02 {
    public static void main(String[] args) {
        Collection c=new ArrayList();
        User u1=new User("脆脆鲨");
        User u2=new User("脆脆鲨");
        c.add(u1);
        //判断集合中是否包含u2
        //没有重写equals方法前,返回的是false
      //  System.out.println(c.contains(u2)); //false
        //重写equals方法后,返回的是true,比较的是name
        System.out.println(c.contains(u2)); //true
        c.remove(u2);
        System.out.println(c.size()); //0

        Integer it=new Integer(1000) ;  //Integer中重写了equals方法
        c.add(it);
        Integer it1=new Integer(1000) ;
        System.out.println(c.contains(it1)); //true

    }
}

class User{
    private String name;

    public User(){}
    public User(String name) {
        this.name = name;
    }
  // 重写了equals方法
   @Override
    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);
    }


}

package Collection;

import java.util.ArrayList;
import java.util.Collection;

public class Containstest03 {
    public static void main(String[] args) {
        Collection c=new ArrayList();
        String s1=new String("小玉");
        c.add(s1);
        String s2=new String("小玉");
        //删除
        c.remove(s2);//s1.equals(s2)  java认为s1和s2是一样的,删除s2就是删除s1
        //集合中的元素为?
        System.out.println(c.size());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小心!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值