Java LinkedList问题 - 如何删除符合某些资格的项目

1 java linked-list object

我有个问题,

这是我需要做的 -

我有BankItem与数字相关的问题.我填写列表,但当一个对象输入比列表中当前最低的美元值多100美元时,我想删除具有低值的对象.

首先 - 我创建列表

    List<BankItem> listOfBankItems = new LinkedList<BankItem>();
Run Code Online (Sandbox Code Playgroud)

稍后在程序中我创建了一个新的BankItem对象并将其添加到列表中

listOfBankItems.add(createdItem);
Run Code Online (Sandbox Code Playgroud)

并且在添加每个项目之后我想检查以查看新项目是否比列表中已有的任何对象多100美元,所以我运行这样的东西

   for (int i = 0; i < listOfBankItems.size(); i++) {
    int oldValue =listOfBankItems.get(i).getAmount();
    int  newValue = createdItem.getAmount();
    int calculatedDif = newValue - oldValue;


    if (calculatedDif > 100) {
       listOfBankItems.remove(i); 
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用.我不知道它是什么.也许我不应该使用LinkedList?也许我的逻辑偏离基础.请帮忙.

谢谢!!!

Ern*_*ill 6

问题是删除后的所有项目的索引将在删除该元素后发生变化; 因此,在删除之后,您基本上会跳过下一个元素.

使用迭代器:

for (Iterator<BankItem> itr = listOfBankItems.iterator(); itr.hasNext();) {
    BankItem item = itr.next();
    int oldValue = item.getAmount();
    int newValue = createdItem.getAmount();
    int calculatedDif = newValue - oldValue;
    if (calculatedDif > 100) {
       itr.remove(); 
    }
}
Run Code Online (Sandbox Code Playgroud)