Пишу код, попал в тупик. Есть код, перебирающий и сравнивающий значения 2 List'ов заполненных объектами класса Action. Почему то удаление из коллекций работает на всегда. Добавил в код проверку и вижу, что метод remove() для объекта коллекции вызван, а последующая проверка наличия его же в этой коллекции показывает true!
iteratorFileList = fileList.iterator();
while (iteratorFileList.hasNext()) {
Action temp = iteratorFileList.next();
Iterator<Action> iteratorDBList = dbList.iterator();
while (iteratorDBList.hasNext()){
Action temp2 = iteratorDBList.next();
if (temp.getProductCode().equals(temp2.getProductCode()) && temp.getfP()==temp2.getfP()) {
boolean test = false;
if (temp2.getProductCode().equals("18%КРД1А04")) {
System.out.println(temp2);
System.out.println("del");
test = true;
}
temp.getId().addAll(temp2.getId());
iteratorDBList.remove();
p++;
if (test){
System.out.println(dbList.contains(temp2));
}
}
}
}
Вывод:
Action{actionName='Тестовая акция', bankActionName='Тестовая акция', productSetId=10396, productCode='18%КРД1А04', minSum=1500, maxSum=200000, rate=18.0, term=4, fP=0, discount=0.0, id=420251}
del
true
Action{actionName='Тестовая акция', bankActionName='Тестовая акция', productSetId=10396, productCode='18%КРД1А04', minSum=200001, maxSum=500000, rate=18.0, term=4, fP=0, discount=0.0, id=511414}
del
true
Action{actionName='Тестовая акция', bankActionName='Тестовая акция', productSetId=10396, productCode='18%КРД1А04', minSum=1500, maxSum=200000, rate=18.0, term=4, fP=0, discount=3.71, id=449664}
del
false
Action{actionName='Тестовая акция', bankActionName='Тестовая акция', productSetId=10396, productCode='18%КРД1А04', minSum=200001, maxSum=500000, rate=18.0, term=4, fP=0, discount=3.71, id=511754}
del
false
Action{actionName='Тестовая акция', bankActionName='Тестовая акция', productSetId=10396, productCode='18%КРД1А04', minSum=200001, maxSum=500000, rate=18.0, term=4, fP=10, discount=0.0, id=511448}
del
true
Коллекции сравниваются большие - по несколько тысяч записей. При этом итоговое количество ошибок всегда неизменно. Где я туплю?
dbList.contains(temp2) может возвращать истину, если в dbList есть ещё один или более Action равный содержащемуся в переменной temp2.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости