У меня есть система, которая включает в себя загрузку объектов PlayerValue. Объекты отформатированы как таковые: значение [Header]. Я сохранил их в текстовом файле, и всякий раз, когда я сохраняю или читаю из файла, я хочу удалить дубликаты заголовков. Так что я сделал это:Итерация с двойным вложенным циклом (ArrayList)
первым, я загружаю все PlayerValues из файла в ArrayList под названием «массив», то:
for (PlayerValue v : array) {
for (PlayerValue v1 : array) {
if (v1.header.equals(v.header)) {
array.remove(v1);
}
}
}
Здесь вы можете увидеть, он проходит через каждый элемент массива , то для каждого элемента он снова ищет массив для одного и того же заголовка.
Это эффективно удалит дубликаты заголовков, за исключением того, что он выдает исключение ConcurrentModificationException.
Любая помощь для работы вокруг?
использовать набор таких как HashSet, а чем ArrayList. Наборы не позволяют дублировать. В противном случае, чтобы удалить из коллекции во время итерации, используйте Iterator. –
Я мог бы обрабатывать повторяющиеся записи, но два PlayerValues могут иметь один и тот же заголовок с разными значениями (что делает их неравными), а метод ArrayList.contains игнорирует его. – zfollette
@HovercraftFullOfEels Единственная проблема заключается в том, что он хочет удалить дубликаты на основе некоторого атрибута, а не только на основании того, являются ли объекты равными. – arshajii