Najprostsze: zrzuć całą kolekcję do zestawu (za pomocą konstruktora Set (Collection) lub Set.addAll), a następnie sprawdź, czy zestaw ma taki sam rozmiar jak ArrayList.
List<Integer> list = ...;
Set<Integer> set = new HashSet<Integer>(list);
if(set.size() < list.size()){
/* There are duplicates */
}
Aktualizacja: Jeśli dobrze rozumiem twoje pytanie, masz 2d tablicę bloków, jak w
Tabela blokowa [] [];
i chcesz sprawdzić, czy któryś z nich ma duplikaty?
W takim przypadku mógłbym wykonać następujące czynności, zakładając, że Block poprawnie implementuje „equals” i „hashCode”:
for (Block[] row : table) {
Set set = new HashSet<Block>();
for (Block cell : row) {
set.add(cell);
}
if (set.size() < 6) { //has duplicate
}
}
Nie jestem tego w 100% pewien, jeśli chodzi o składnię, więc bezpieczniej byłoby napisać to jako
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
zwraca wartość logiczną fałsz, jeśli dodawany element jest już w zestawie, więc możesz nawet zewrzeć i zbalansować każdy dodatek, który powróci, false
jeśli chcesz tylko wiedzieć, czy są jakieś duplikaty.