У меня есть два Arraylists, один содержит весь список объектов, второй содержит объекты для удаления из первого списка.ArrayList и Formatter не ведут себя как ожидалось
Когда я удаляю объекты из первого списка, и когда я вывожу эти объекты в файл с помощью Formatter, в файл ничего не записывается. Однако, если я вывожу объекты из первого Arraylist, не удаляя никаких объектов, все эти объекты появляются в файле.
Например: -
for(Invoice inv : tempStore)
{
if(invoiceLines.contains(inv))invoiceLines.remove(inv);
}
//for each invoice in the ArrayList
for(Invoice invoice : invoiceLines)
{
output.format("%"+this.spec.getLength("XXXX")+"s\t",checkString(invoice.getInvoiceDate()));}
не дает мне выход, однако делать только: -
//for each invoice in the ArrayList
for(Invoice invoice : invoiceLines)
{
output.format("%"+this.spec.getLength("XXXX")+"s\t",checkString(invoice.getInvoiceDate()));}
дает мне выходную информацию, когда вручную отладки приложения в ArrayList (тот, с объектами удаляется), содержит объекты по-прежнему, и эти объекты содержат правильные значения. Это похоже на то, что Arraylist, когда объекты удаляются, теряет указатели в памяти.
Любые идеи? К сожалению, я не могу много сделать для конкретного кода, однако задаю любые вопросы, и я постараюсь ответить как можно лучше. Язык Java, и я использую Java 1.5 в SDK.
Я бы использовал отладчик и проверял, что ваши 'invoiceLines' не пусты перед итерацией и печатью в случае 1. – Mena
Уже сделано так, следовательно, комментарий при использовании отладчика присутствует. Когда я говорю об отладке вручную, я имею в виду в том, что нужно переходить через код и проверять переменные, а не использовать автоматические тесты, которые я написал. –