Am einfachsten: Speichern Sie die gesamte Sammlung in einem Set (mithilfe des Set-Konstruktors (Collection) oder von Set.addAll) und prüfen Sie, ob das Set dieselbe Größe wie die ArrayList hat.
List<Integer> list = ...;
Set<Integer> set = new HashSet<Integer>(list);
if(set.size() < list.size()){
/* There are duplicates */
}
Update: Wenn ich Ihre Frage richtig verstehe, haben Sie ein 2D-Array von Block, wie in
Blocktabelle [] [];
und Sie möchten feststellen, ob eine Reihe von ihnen Duplikate enthält?
In diesem Fall könnte ich Folgendes tun, vorausgesetzt, Block implementiert "equals" und "hashCode" korrekt:
for (Block[] row : table) {
Set set = new HashSet<Block>();
for (Block cell : row) {
set.add(cell);
}
if (set.size() < 6) { //has duplicate
}
}
Ich bin mir der Syntax nicht 100% sicher, daher ist es möglicherweise sicherer, sie als zu schreiben
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
Gibt einen booleschen Wert false zurück, wenn sich das hinzugefügte Element bereits im Satz befindet. Sie können also sogar einen Kurzschluss kurzschließen und einen Fehler beheben, der zurückgegeben wird, false
wenn Sie nur wissen möchten, ob Duplikate vorhanden sind.