在java中,這裏有一個catch。對象已經被編譯,因此hash()和equals()方法不能被覆蓋。把它放到一個集合中,然後回到列表中將不起作用,因爲唯一性標準當前沒有在equals()中定義,並且這不能被覆蓋。刪除對象列表中的重複項而不依賴於集合
回答
你應該仍然能夠創建子類並創建equals
和hashcode
工作的方法,除非類/方法是final
。
如果是這種情況,您可以使用組合,基本上爲您要放入集合的東西創建一個包裝,並讓包裝的equals
和hashcode
正確地實現合同,以包裝物件。
你處於困境中,因爲我正在閱讀的是原始類沒有遵循equals
和hashcode
的合約,這在Java中是一個真正的問題。這是一個非常嚴重的錯誤。
有時哈希碼變得棘手/昂貴... –
當然,但它仍然必須是正確的。 – hvgotcodes
問題是如果比較便宜,TreeSet方法可能會更好。原來的問題並沒有說有什麼好的哈希碼。 –
爲您的物品寫一個自定義Comparator並使用Collections.sort()對您的物品進行分類。然後通過查看循環中的列表來刪除重複項。
...或者使用'Comparator'和'TreeSet' –
a compareTo
方法將返回-1
,0
,1
;如果0
,請從列表中刪除。
- 1. 如何刪除對象集合中的重複項?
- 2. Java:Equalator? (刪除對象集合中的重複項)
- 3. 組合兩個列表並刪除重複項,而不刪除重複項在原始列表
- 4. 刪除集合中的重複項
- 5. 刪除集合中的重複項
- 6. 從C#集合列表對象中刪除項目
- 7. 從對象集合中刪除項目
- 8. 用Python刪除對象列表中的重複項
- 9. 重新排列集合而不添加/刪除項目?
- 10. GroupBy從IEnumerable對象列表中刪除重複項
- 11. 基於每個列表的子集從列表中刪除重複項
- 12. 當刪除集合中的項目時,ObservableCollection依賴項屬性不會更新
- 13. 更新依賴對象的集合
- 14. 刪除Maven Pom中的重複依賴項
- 15. 刪除列表中的重複項目
- 16. 刪除Haskell列表中的重複項
- 17. 刪除列表中的重複項
- 18. 刪除列表中的重複項
- 19. Python刪除列表中的重複項
- 20. 刪除列表中的重複項-linq
- 21. 刪除列表中的重複項(c#)
- 22. 如何從基於自定義Java對象而不是基元類型的列表中刪除重複項?
- 23. 當對象屬性重複時從對象列表中刪除項目
- 24. 從列表中與列表刪除重複作爲對象
- 25. 刪除基於兩列的重複項
- 26. SetUniqueList,HashSet和Set不會刪除對象列表中的重複項
- 27. 消除maven依賴項重複
- 28. 刪除Python中的重複項Pandas DataFrame不刪除重複項
- 29. 從C++列表中刪除重複項
- 30. Haskell從列表中刪除重複項
你在'equals()'方法中沒有定義'唯一性'的標準是什麼? – Atreys