Đơn giản nhất: kết xuất toàn bộ tập hợp vào một Tập hợp (sử dụng phương thức khởi tạo Set (Collection) hoặc Set.addAll), sau đó xem liệu Tập hợp có cùng kích thước với ArrayList hay không.
List<Integer> list = ...;
Set<Integer> set = new HashSet<Integer>(list);
if(set.size() < list.size()){
/* There are duplicates */
}
Cập nhật: Nếu tôi hiểu câu hỏi của bạn một cách chính xác, bạn có một mảng Khối 2d, như trong
Bảng khối [] [];
và bạn muốn phát hiện xem có hàng nào trùng lặp không?
Trong trường hợp đó, tôi có thể làm như sau, giả sử rằng Block triển khai "bằng" và "mã băm" một cách chính xác:
for (Block[] row : table) {
Set set = new HashSet<Block>();
for (Block cell : row) {
set.add(cell);
}
if (set.size() < 6) { //has duplicate
}
}
Tôi không chắc chắn 100% về điều đó về cú pháp, vì vậy có thể sẽ an toàn hơn nếu viết nó là
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
trả về một boolean false nếu mục đang được thêm vào đã có trong tập hợp, vì vậy bạn thậm chí có thể đoản mạch và bỏ đi trên bất kỳ phần bổ sung nào trả về false
nếu tất cả những gì bạn muốn biết là có bất kỳ bản sao nào không.