En basit: tüm koleksiyonu bir Set'e boşaltın (Set (Collection) yapıcısını veya Set.addAll kullanarak), ardından Set'in ArrayList ile aynı boyutta olup olmadığına bakın.
List<Integer> list = ...;
Set<Integer> set = new HashSet<Integer>(list);
if(set.size() < list.size()){
/* There are duplicates */
}
Güncelleme: Sorunuzu doğru anlıyorsam, 2d bir Blok diziniz var.
Blok tablosu [] [];
ve herhangi bir satırında kopya olup olmadığını mı tespit etmek istiyorsunuz?
Bu durumda, Block'un "eşittir" ve "hashCode" u doğru şekilde uyguladığını varsayarak şunları yapabilirim:
for (Block[] row : table) {
Set set = new HashSet<Block>();
for (Block cell : row) {
set.add(cell);
}
if (set.size() < 6) { //has duplicate
}
}
Sözdizimi için bundan% 100 emin değilim, bu yüzden şu şekilde yazmak daha güvenli olabilir
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
Eklenen öğe zaten set içindeyse bir boolean false döndürür, böylece false
bilmek istediğiniz tek şey herhangi bir kopya olup olmadığı ise , dönen herhangi bir eklemede kısa devre yapabilir ve balyalayabilirsiniz .