java - 仅当 arraylist 中不存在具有相同名称的其他项目时,如何添加项目?

标签 java arrays arraylist

如果项目与我的 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/

相关文章:

java - 使用字符串数组来标记每个条目的字母

java - 检查二维数组中的等效行?

c# - 按 Arraylist 中的顺序按键对字典进行排序

java FileInputStream 找不到文件

java - 在 com.android.build.gradle.internal.dsl.BaseAppModuleExtension 类型的对象上找不到参数 [26] 的方法 ImplementationSdkVersion()

java - 用并行流替换嵌套 for 循环 - Java

java - Spring JPA如何获取列的AVG

c - 我的程序的输出令人困惑

java - 将 ArrayList 分配给 Java 中的列表

java - JComboBox 从对象的 ArrayList 中列出字符串