
本文旨在提供一种从 `ArrayList` 中移除具有相同名称的重复项,并根据用户指定的数量进行扣减的有效方法。我们将详细介绍如何检查列表中是否存在足够的数量,如何迭代列表查找指定名称的项,以及如何在扣减数量后移除数量为零的项。此外,还将提供相应的Java代码示例,帮助读者理解和应用该方法。
当需要从 ArrayList 中删除重复项,并且删除的依据是基于每个重复项的数量时,需要采取一种特殊的策略。例如,一个 ArrayList 包含多个具有相同名称的 Item 对象,每个 Item 对象都有一个 quantity 属性。用户希望删除指定数量的某个 Item,如果列表中存在多个相同名称的 Item,则需要将它们的数量累加起来,并从这些 Item 中扣除指定数量,直到删除的数量达到用户的要求。
以下是一种解决此问题的有效方法:
1. 检查总数量是否足够
在开始删除操作之前,首先需要验证列表中是否存在足够数量的指定 Item。可以通过遍历列表,累加所有具有相同名称的 Item 的数量来实现。如果总数量小于用户希望删除的数量,则应该提示用户数量不足,并停止删除操作。
2. 迭代列表并扣除数量
如果总数量足够,则可以开始迭代列表,查找指定名称的 Item。对于找到的每个 Item,需要将其数量与用户希望删除的数量进行比较。
重复此过程,直到用户希望删除的数量为 0 或列表迭代完成。
3. 代码示例
以下是一个 Java 代码示例,演示了如何实现上述方法:
import java.util.ArrayList;
import java.util.Iterator;
class Item {
private String name;
private int quantity;
public Item(String name, int quantity) {
this.name = name;
this.quantity = quantity;
}
public String getName() {
return name;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
@Override
public String toString() {
return "Item{" +
"name='" + name + '\'' +
", quantity=" + quantity +
'}';
}
}
public class ItemRemover {
private ArrayList<Item> items;
public ItemRemover(ArrayList<Item> items) {
this.items = items;
}
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();
int deduction = Math.min(q, iq);
item.setQuantity(iq - deduction);
q -= deduction;
if (item.getQuantity() == 0) {
it.remove();
}
}
}
}
public static void main(String[] args) {
ArrayList<Item> items = new ArrayList<>();
items.add(new Item("Apple", 5));
items.add(new Item("Banana", 3));
items.add(new Item("Apple", 3));
items.add(new Item("Orange", 2));
items.add(new Item("Apple", 2));
ItemRemover remover = new ItemRemover(items);
System.out.println("Original List: " + items);
remover.removeNameQuantity("Apple", 7);
System.out.println("List after removing 7 Apples: " + items);
remover.removeNameQuantity("Banana", 5); // Attempt to remove more bananas than available
System.out.println("List after attempting to remove 5 Bananas: " + items);
remover.removeNameQuantity("Orange", 2);
System.out.println("List after removing 2 Oranges: " + items);
}
}4. 注意事项
5. 总结
本文介绍了一种从 ArrayList 中移除具有相同名称的重复项,并根据用户指定的数量进行扣减的有效方法。该方法首先检查列表中是否存在足够数量的指定 Item,然后迭代列表查找指定名称的 Item,并扣除相应的数量。最后,提供了相应的 Java 代码示例,帮助读者理解和应用该方法。 通过这种方法,可以有效地管理 ArrayList 中的重复项,并根据实际需求进行删除操作。
以上就是从ArrayList中基于数量移除重复项的正确方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号