ง่ายที่สุด: ถ่ายโอนคอลเล็กชันทั้งหมดลงใน Set (โดยใช้ตัวสร้าง Set (Collection) หรือ Set.addAll) จากนั้นดูว่า Set มีขนาดเท่ากับ ArrayList หรือไม่
List<Integer> list = ...;
Set<Integer> set = new HashSet<Integer>(list);
if(set.size() < list.size()){
/* There are duplicates */
}
อัปเดต: หากฉันเข้าใจคำถามของคุณอย่างถูกต้องคุณมีอาร์เรย์ 2d ของบล็อกเช่นเดียวกับใน
ตารางบล็อก [] [];
และคุณต้องการตรวจสอบว่ามีแถวที่ซ้ำกันหรือไม่?
ในกรณีนั้นฉันสามารถทำสิ่งต่อไปนี้ได้โดยสมมติว่าบล็อกใช้ "เท่ากับ" และ "hashCode" อย่างถูกต้อง:
for (Block[] row : table) {
Set set = new HashSet<Block>();
for (Block cell : row) {
set.add(cell);
}
if (set.size() < 6) { //has duplicate
}
}
ฉันไม่แน่ใจ 100% สำหรับไวยากรณ์ดังนั้นการเขียนเป็นไฟล์
for (int i = 0; i < 6; i++) {
Set set = new HashSet<Block>();
for (int j = 0; j < 6; j++)
set.add(table[i][j]);
...
Set.add
ส่งคืนบูลีนเท็จหากรายการที่เพิ่มอยู่ในชุดแล้วดังนั้นคุณสามารถลัดวงจรและมัดออกจากการเพิ่มใด ๆ ที่ส่งคืนfalse
หากสิ่งที่คุณต้องการทราบคือมีรายการที่ซ้ำกันหรือไม่