Ric*_*rez 1 java arrays arraylist
如果项目与insertUniqueItem()方法中的arraylist中的其他项目名称不同,我将如何仅插入项目?
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()));
}
}
Run Code Online (Sandbox Code Playgroud)
我可能会使用一个LinkedHashMap<String, Item>代替,其中键是项目的名称.那样:
你有类似的东西:
if (!map.containsKey(item.getName()) {
map.put(item.getName(), item);
}
Run Code Online (Sandbox Code Playgroud)
这仅适用于您希望所有项目在名称方面都是唯一的.如果你有时要允许重复的名称,有时没有,你可能做想要的清单,然后你可以有这样的:
boolean containsItemName(ArrayList<Item> items, String name) {
for (Item item : items) {
if (item.getName().equals(name)) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Java 8,则可以使用基于流的解决方案:
boolean containsItemName(ArrayList<Item> items, String name) {
return items.stream().anyMatch(item -> item.getName().equals(name));
}
Run Code Online (Sandbox Code Playgroud)