Простейший: сбрасывает всю коллекцию в 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-массив Block, как в
Block table [] [];
, и вы хотите определить,
В этом случае я мог бы сделать следующее, считая, что Block реализует «equals» и «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]);
...
Этот код одинаково растягивает каждый столбец так, чтобы он соответствовал ширине таблицы.
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
Документы: