JAVA:remove(Object o)删除ArrayDeque中的自定义对象以及JSON格式化错误
今天做实验的时候,想在ArrayDeque中利用删除remove(Object o)某一个特定的Page对象,来进行下一步操作。

因为在上一篇文章已经说过了迭代器内修改对象的原理,所以目前来说按照下面的代码删除肯定是不成功的。
错误代码:

错误结果:

通过在网上查找资料,发现remove只适用于原始数据类型(不做其他修改/重写方法的话),所以就想拿整数试试(添加的是整数,删除的也是整数)。结果就出现了JSON格式化错误。
错误代码:

我的理解是因为本次的泛型设置的是Object,不具体,然后判断时仍会以之前的Page类型来判断,理解错误欢迎指正。
由于我也不是很理解,下面附上资料:
https://mp.weixin.qq.com/s/NiOpDfsnDPjhaXvx3aabyQ
随后我又找到了一种新的方法:在Page类中重载equals()方法
先上代码:

解释:
remove源码:

在remove(Object o)方法中对于寻找要删除的元素时使用的判断条件为if (o.equals(es[i]))
所以我们可以通过重载equals()方法来自定义判断对象相等的条件
而在equals()方法中需要进行强制类型转换的原因是es的底层声明类型为Object。
重新跑一边结果:没有问题了
