调用contains()方法时用不用重写equals方法

package com.hd.Test;

import java.util.ArrayList;

import com.hd.DB.DataSource;

public class Test02 {
    public static void main(String[] args) {
    
ArrayList<Integer> date=new ArrayList<Integer>();
date.add(1);//date.add(new Integer(1) )
System.out.println(date.contains(1));
ArrayList<String> date1=new ArrayList<String>();
date1.add("1");
System.out.println(date1.contains("1"));
ArrayList<User> date2=new ArrayList<User>();
date2.add(new User(123,"Jany"));
System.out.println(date2.contains(new User(123,"Jany")));
}
    }
class User{
    int id;
    String name;
    public User(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }  

}

输出结果:true

                true

                false

contains(Object o)底层是调用Object.equals(Object obj)来比较是否包含,equals比较的是堆中的地址

date.contains(1)在底层比较是括号内1和原对象中1的地址

date.contains(“1”)也在底层比较是括号内“1”和原对象中“1”的地址

date2.contains(new User(123,"Jany"))在底层比较的是date2.add(new User(123,"Jany"))执行后的date2和括号内新建的123,"Jany"对象的地址,新建的对象的地址自然和原集合date2的地址不再一样。所以想要比较内容的话要重写















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值