java 如何根据数量从ArrayList中删除重复项

0ve6wy6x  于 2022-11-20  发布在  Java
关注(0)|答案(1)|浏览(135)

首先创建一个包含项的数组列表

ArrayList<Item> Items

注意事项:项目有属性数量。然后,系统会要求使用者输入项目的名称和要舍弃的数量。但是,如果清单中出现多个名称相同的项目,则数量应该加在一起。例如,如果清单中包含“Apple”(数量5)和“苹果”(数量3),并且用户希望从物品列表中移除7个苹果,所有数量为5的第一个“Apple”将被丢弃,丢弃后第二个“Apple”将变为1。一旦数量=0,它将被删除
解决此问题的适当方法是什么?

tkclm6bt

tkclm6bt1#

  • 检查清单中的工程量总量是否足够
  • 循环访问列表以按名称查找项目。
  • 找到后,将项目的数量减少quantity以删除--如果项目的数量等于或小于零,则从列表中删除该项目。同样,将输入quantity减少项目的数量,并在没有剩余数量时立即退出循环。
public void removeNameQuantity(String name, int q) {

    int totalQ = Items.stream()
            .filter(i -> name.equals(i.getName()))
            .mapToInt(Item::getQuantity)
            .sum();
    if (totalQ < q) {
        System.out.println("Insufficient quantity of " + name + "(s) available");
        return;
        // or throw some appropriate exception
    }
    for (Iterator<Item> it = Items.iterator(); it.hasNext() && q > 0;) {
        Item item = it.next();
        if (name.equals(item.getName())) {
            int iq = item.getQuantity();
            item.setQuantity(iq - Math.min(q, iq));
            if (iq <= q) {
                it.remove();
            }
            q -= iq;
        }
    }
}

相关问题