java之关于Collection的注意点

1.这是一个javabean,重写了equals方法,可以比较对象的值而不是java自带的定义比较对象的地址。在这里插入图片描述
2.第一在这里插入图片描述

输出结果:
在这里插入图片描述
3.第二
在这里插入图片描述

输出结果:
在这里插入图片描述
从这个结果看的话,不妨有几个问题。
1.为什么remove(m2)得到的size大小是0.
2.为什么第二个例子是2
3.如果更比较基础的是为什么重写equals方法?
1.1.为什么remove(m2)得到的size大小是0.?
答:因为我们重写了eqeuls对象,然后重点让size为0 的并不是大家下意识的想是不是对象又出了新的譬如常量池的东西,其实并不是。Collection 里的remve方法是去调用你所要进行操作的元素进行对集合内的元素进行equals比较大小。如果存在相等的值,那么你所删除的数就会将集合中存在的给删除掉。其实想法深刻一点和常量池的思想其实很像但是它不是哦。
2.2.为什么第二个例子是2
答:因为我们定义的Collection的多态调用的是子集xxxList的引用,所以我们可以将数值相等的值插入在同一个集合中,即当我们add时是可通过的,即集合创建了一个和上一个数相同的指针。那我们在remove时,这个时候我们同样的是对比,但是当我们加入这个集合时它就以指针数组存在其中,那么remove就会直接删除掉,不会再去比较。
简单的去理解吧,如果你没有add那么remove对比集合中存不存在,存在就删掉。如果你add了,remove掉的只有你add的这个数即使有和这个数相等的也不管。
3.3.3.如果更比较基础的是为什么重写equals方法?
equals方法是SUN公司提供给我们的方法,但是这个方法仅仅是提供去比较对象的地址是否相等,这对于我们程序员来说是比较鸡肋的,所以我们几乎都不会用,但是呢,因为有了这个方法,也比较好记操作起来也比较顺手,那么我们就按着这个SUN公司给起的比较大小的名字,重写这个方法。
注:包装类(自动装箱拆箱)和String的常量池又是和上述的有些些许的不同,如果有感兴趣的朋友可以去了解一下。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值