ลบรายการที่ซ้ำกันออกจาก ArrayList เมื่อวัตถุไม่มีการอ้างอิงเดียวกัน [ซ้ำกัน]

ฉันมีปัญหาในโครงการของฉันในขณะนี้ ฉันมี 1 arraylist (เรียกว่าใหญ่) ที่สร้างขึ้นโดยอีก 3 arraylists (A, B, C) จากแบบสอบถาม SQL แต่ละรายการ ดังนั้นฉันจึงมีรายการซ้ำโดยทั่วไป (บางครั้งรายการเดียวกัน 3 หรือมากกว่านั้น) ในรายการอาร์เรย์ BIG .

ปัญหาของฉันคือฉันไม่สามารถใช้เมธอด .contains() ได้เนื่องจากการอ้างอิงของอ็อบเจ็กต์นั้นแตกต่างกัน (แม้ว่าบางอ็อบเจ็กต์จะแสดง "รายการ" เดียวกัน) และเป็น "คีย์หลัก" ซึ่งเป็นแอตทริบิวต์ที่ไม่เคยเปลี่ยนแปลงภายในแต่ละอัน รายการใน arraylist คือ ID ของรายการ (int) ฉันจะลบองค์ประกอบที่ซ้ำกันได้อย่างไรเพื่อให้ได้รับ "รายการ" เพียงรายการเดียวเท่านั้น


person heythatsmekri    schedule 02.07.2014    source แหล่งที่มา
comment
เมธอด contains() ไม่ได้เปรียบเทียบการอ้างอิง แต่ใช้ .equals() กับอ็อบเจ็กต์ที่มีอยู่ในรายการ คุณต้องใช้เท่ากับ() และ hashcode() ในคลาสนั้น ตามที่ @Java Learner แนะนำ   -  person Ignazio    schedule 02.07.2014


คำตอบ (2)


คุณต้องแทนที่เมธอด Equals ของคลาสนั้น ตามข้อกำหนดทางธุรกิจ

และวิธีการของหลักสูตร hashcode เพราะหาก เท่ากับ ถูกแทนที่ วิธีการ hashcode ก็ควรถูกแทนที่เช่นกัน

person Ninad Pingale    schedule 02.07.2014

อธิบายได้ดีที่นี่:

จะลบรายการที่ซ้ำกันออกจากรายการได้อย่างไร

ใน equals ตรวจสอบแอตทริบิวต์ id ของวัตถุทั้งสอง

person Kasper Ziemianek    schedule 02.07.2014