JAVA:remove(Object o)刪除ArrayDeque中的自定義對象以及JSON格式化錯(cuò)誤
? ??????今天做實(shí)驗(yàn)的時(shí)候,想在ArrayDeque中利用刪除remove(Object o)某一個(gè)特定的Page對象,來進(jìn)行下一步操作。

????因?yàn)樵谏弦黄恼乱呀?jīng)說過了迭代器內(nèi)修改對象的原理,所以目前來說按照下面的代碼刪除肯定是不成功的。
????錯(cuò)誤代碼:

????錯(cuò)誤結(jié)果:

????通過在網(wǎng)上查找資料,發(fā)現(xiàn)remove只適用于原始數(shù)據(jù)類型(不做其他修改/重寫方法的話),所以就想拿整數(shù)試試(添加的是整數(shù),刪除的也是整數(shù))。結(jié)果就出現(xiàn)了JSON格式化錯(cuò)誤。
????錯(cuò)誤代碼:

????我的理解是因?yàn)楸敬蔚姆盒驮O(shè)置的是Object,不具體,然后判斷時(shí)仍會以之前的Page類型來判斷,理解錯(cuò)誤歡迎指正。
????由于我也不是很理解,下面附上資料:
????https://mp.weixin.qq.com/s/NiOpDfsnDPjhaXvx3aabyQ
????隨后我又找到了一種新的方法:在Page類中重載equals()方法
????先上代碼:

????解釋:
????remove源碼:

????在remove(Object o)方法中對于尋找要刪除的元素時(shí)使用的判斷條件為if (o.equals(es[i]))
所以我們可以通過重載equals()方法來自定義判斷對象相等的條件
????而在equals()方法中需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換的原因是es的底層聲明類型為Object。
????重新跑一邊結(jié)果:沒有問題了
