gpt4 book ai didi

java - 通过迭代器从ArrayList中删除一个对象

转载 作者:行者123 更新时间:2023-12-02 08:53:41 24 4
gpt4 key购买 nike

我想创建一个类似于家庭预算的程序,所以我有一个类AmountModel(我知道Integer对于id来说不太好,但现在不是问题了):

import java.time.LocalDate;

public class AmountModel {
private Integer id;
private Double amount;
private CategoryModel categoryModel;
private LocalDate localDate;

// getters/setters etc.
}

在另一个类中,我构建了这个 deleteAmount 方法:

static Scanner sc = new Scanner(System.in);

public List<amountModel> deleteAmount() {
Iterator<AmountModel> it = amountList.iterator();
while (it.hasNext()) {
System.out.println("Choose index to delete ");
AmountModel am = it.next();
if (am.getId().equals(sc.nextInt())) {
it.remove();
}
break;
}
return amountList;
}

添加对象效果很好,但是当我尝试使用删除方法时,我必须放置第一个索引。

示例:
我有三个对象(索引分别为 0、1、2)。

  • 当我选择 1 或 2 个程序时,什么都不做。
  • 当我选择 0 时,程序会删除第一个索引,保留索引 1 和 2。
  • 当我选择 2 时,程序不执行任何操作。
  • 当我选择 1 时,程序会删除索引 1,保留索引 2...等等。

这个方法有什么问题吗?

最佳答案

您应该将输入逻辑与删除逻辑分开,并接受列表作为参数。

注意:这只适用于可变列表。如果你使用像 Arrays.asList() 这样的东西,它会抛出异常。

public void deleteAmount(List<AmountModel> list, int key) {
list.removeIf(a -> a.getId().equals(key));
}

关于java - 通过迭代器从ArrayList中删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60622844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com