使用HashMap在Java中存储客户订单

使用HashMap在Java中存储客户订单,java,hashmap,Java,Hashmap,我正在构建一个关于水果店的程序,我必须保存客户的订单列表,我使用HashMap字符串作为客户名称。现在,如果一个客户有许多订单,我如何将其保存在哈希映射中?感谢使用面向对象语言,您应该创建一个类来封装应用程序使用的每个重要概念。您已经描述了保存客户订单列表的需要,那么为什么不创建一个名为Order的新类,该类包含关于单个订单的数据。作为一个粗略的开始,它可能是这样的: public class Order { private List<Fruit> basket;

我正在构建一个关于水果店的程序,我必须保存客户的订单列表,我使用HashMap字符串作为客户名称。现在,如果一个客户有许多订单,我如何将其保存在哈希映射中?感谢使用面向对象语言,您应该创建一个类来封装应用程序使用的每个重要概念。您已经描述了保存客户订单列表的需要,那么为什么不创建一个名为Order的新类,该类包含关于单个订单的数据。作为一个粗略的开始,它可能是这样的:

public class Order {
    private List<Fruit> basket;

    public void addFruitToOrder(Fruit fruit) {
        basket.add(fruit);
    }

    public List<Fruit> getBasket() {
        return basket;
    }
}
ComputeFabSent方法将返回给定客户名称的现有列表(如果该列表已经存在);如果给定客户名称的列表不存在,那么它将使用lambda表达式n->new ArrayList4创建一个新列表。这样,您就可以调用add方法,而不用担心列表是否已经存在

此外,还可以修改订单类以包含属于特定订单的其他数据,例如总价、唯一订单序列号等


将特定的概念(如特定的订单)赋予它自己的类应该使您的代码更易于编写、阅读和维护。

也许是Multimap,Map?我不知道了,但在我的购物方法中,当客户购买商品时,我会将其添加到临时数组列表中,当客户现在选择订单时,我会把它放在散列图中。但是下一次,对于同一个客户,密钥已经存在,那么我就不能把它放进去了。我已经编辑了我的答案,以显示如何使用ComputeFabSent方法,这样,无论是否已经为该客户名称创建了内部列表,您都可以简单地将新订单添加到地图中。
mapFromNameToOrderList.computeIfAbsent(
        customerName, n -> new ArrayList<>(4)).
        add(latestOrder);