如果项目与我的 insertUniqueItem() 方法中的数组列表中的其他项目同名,我将如何只插入该项目?
public void insertUniqueItem()
{
}
public static void main(String[] args)
{
ShoppingCart sc = new ShoppingCart();
Item a = new Item("Kraft Cheese", 4, "\"Best Cheese in Town!\"");
Item b = new Item("Bottle of Water", 2.50, "\"Refreshing Water!\"");
sc.insertItem(a);
sc.insertItem(b);
sc.printInvoice();
sc.insertUniqueItem();
sc.print();
DecimalFormat df = new DecimalFormat("#.00");
System.out.println("Total Price: $" + df.format(sc.getTotal()));
}
}
最佳答案
我可能会使用 LinkedHashMap<String, Item>
相反,键是项目的名称。这样:
- 您仍然可以保留顺序
- 您可以轻松高效地检查给定项目名称是否已有条目。
你会有这样的东西:
if (!map.containsKey(item.getName()) {
map.put(item.getName(), item);
}
这仅在您希望所有 项目在名称方面是唯一的时才有效。如果您有时想允许重复的名称,有时又不想,您可能确实想要一个列表,然后您可以有类似的东西:
boolean containsItemName(ArrayList<Item> items, String name) {
for (Item item : items) {
if (item.getName().equals(name)) {
return true;
}
}
return false;
}
如果您使用的是 Java 8,则可以使用基于流的解决方案:
boolean containsItemName(ArrayList<Item> items, String name) {
return items.stream().anyMatch(item -> item.getName().equals(name));
}
关于java - 仅当 arraylist 中不存在具有相同名称的其他项目时,如何添加项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902332/