Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
oldData, newData) — явный code smell;updated = 0 всегда, т. к. если newData.indexOf(oldItem) >= 0, то либо oldItem == null, либо oldItem.equals(newData.get(index));oldDataIterator.remove() и newData.remove(index), а если используется LinkedList — то вообще убиться веником;oldData + List#indexOf), а сделать линейный проход двумя итераторами/по индексам. Если нет, то использовать два HashSet'а:Set<T> insertedData = new HashSet<>(newData);
insertedData.removeAll(oldData);
inserted = insertedData.size();
Set<T> removedData = new HashSet<>(oldData);
removedData.removeAll(newData);
removed = removedData.size();
Поиск изменений в двух коллекциях