Удаление из коллекций Java

185
08 октября 2017, 22:32

Пишу код, попал в тупик. Есть код, перебирающий и сравнивающий значения 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

Коллекции сравниваются большие - по несколько тысяч записей. При этом итоговое количество ошибок всегда неизменно. Где я туплю?

Answer 1

dbList.contains(temp2) может возвращать истину, если в dbList есть ещё один или более Action равный содержащемуся в переменной temp2.

READ ALSO
Вращение с помощью кватернионов JOGL

Вращение с помощью кватернионов JOGL

Здравствуйте! Рисую 3D-объект с помощью OpenGl на javaВозникла необходимость перемещать и вращать этот объект вокруг своих осей

304
Как получить все элементы Grid view

Как получить все элементы Grid view

Здравствуйте, подскажите, пожалуйста, как получить все элементы gridviewУ меня в gridview находится матрица editText, записывалось через собственный...

226
Какая разница между сервлетом и веб сервисом?

Какая разница между сервлетом и веб сервисом?

Начинаю знакомиться с вебРассматриваю примеры HelloWorld'ов, где в некоторых приводится реализация с использованием сервлетов, и при открытии...

181
Вырезка картинки

Вырезка картинки

Допустим у меня есть некий имейдж с размерами 200, 50:

171