Никогда не используйте remove
на ArrayList
, это O (size ()).Кроме того, ваша переменная count оборачивается и разворачивается каждый раз, когда вы увеличиваете ее.Сделайте его тип int
и оберните его в Integer
только в самом конце.
Не зная ничего о типе сохраняемых вами объектов, я предполагаю, что методы equals
и hashCode
переопределены дляих.Тогда самое лучшее, что приходит на ум, - это обернуть массив Object в класс Row (в любом случае это хорошо), переопределить equals и hashCode для Row (используя Arrays.equals и Arrays.hashCode) и подсчитать вхождения каждогоСтрока за один проход, используя
HashMap<Row, Integer> count;
for (Row row : table) {
if (count.containsKey(row)) {
count.put(row, count.get(row) + 1);
} else {
count.put(row, 1);
}
}