java—使用迭代器模式的最佳数组类型

q3qa4bjr  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(303)

首先让我说,我对java是个新手,但不是很新。
我正在寻找建立一个餐厅菜单应用程序使用迭代器模式。所以我的问题是实现一个字符串名为item,double value的2d数组的最佳数组类型是什么?
样品

ArrayList<String> menuItems;

    public PancakeHouseMenu() {
        menuItems = new ArrayList<String>();
        addItem("K&B's Pancake Breakfast",5);
String[][] menuItems;
public DinerMenu() {
        menuItems = new String[MAX_ITEMS];
        addItem("Vegetarian BLT",5);

或者我可以使用hashmaps,如果可以的话,在代码和运行时什么是最有效的。
我希望能深入了解在上面给定的场景中使用数组的情况。

hgtggwj0

hgtggwj01#

在这种情况下,hashmap将比数组更有效。hashmaps提供了固定时间的查找、插入和删除(平均)。
实现如下所示

HashMap<String, Double> menu  = new HashMap<>();
 menu.put("burger", 5.50);
 menu.containsKey("burger"); //true
 menu.get("burger"); //5.50
p5cysglq

p5cysglq2#

是 java 。java名义上是类型化的。你有概念吗?给它起个名字!

class MenuItem {
    String name;
    int price; // in cents
}

如果你想在菜单上列出这些,那么。。列一张清单:

List<MenuItem> items;

就这么简单。 String[][] 大部分是无用的;你不能用字符串来表示价格,你也不想这样做,你的代码将会陷入一个不可读的混乱。 String 作为一种类型,它的描述性远不如 MenuItem 并且没有机会在menuitem类中编写与其所属的菜单项本身相关的所有代码。
注意:您确实需要在menuitem类上实现字符串、equals和hashcode。您可以自己编写它们,或者让ide生成它们,或者使用lombok之类的工具,或者如果您使用的是java16并且有预览功能,则可以使用记录。

相关问题