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

Java 使用迭代器模式的最佳数组类型,java,arrays,design-patterns,Java,Arrays,Design Patterns,首先让我说,我对Java非常陌生,但并不陌生 我希望使用迭代器模式构建一个餐馆菜单应用程序。 所以我的问题是,实现一个字符串名为item,Double Value的二维数组的最佳数组类型是什么 样品 ArrayList<String> menuItems; public PancakeHouseMenu() { menuItems = new ArrayList<String>(); addItem("K&B'

首先让我说,我对Java非常陌生,但并不陌生

我希望使用迭代器模式构建一个餐馆菜单应用程序。 所以我的问题是,实现一个字符串名为item,Double Value的二维数组的最佳数组类型是什么

样品

ArrayList<String> menuItems;
 
    public PancakeHouseMenu() {
        menuItems = new ArrayList<String>();
        addItem("K&B's Pancake Breakfast",5);
或者我可以使用Hashmaps吗?如果可以的话,在代码和运行时什么是最有效的


我希望能够深入了解在上述给定场景中使用阵列的更大情况。

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

class MenuItem {
    String name;
    int price; // in cents
}
如果你想在菜单中列出这些,那么。。请列出以下各项:

List<MenuItem> items;
列表项;
就这么简单。
String[][]
基本上是无用的;你不能用字符串来表示价格,你也不想这样做,你的代码将陷入一个无法阅读的混乱<作为一种类型,code>String远不如
MenuItem
那么具有描述性,因此您没有机会在它所属的MenuItem类中编写与菜单项本身相关的所有代码


注意:您确实需要在MenuItem类上执行字符串、equals和hashCode。您可以自己编写它们,或者让IDE生成它们,或者使用类似的东西,或者如果您使用的是java16,并且具有预览功能,则可以使用记录。

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

class MenuItem {
    String name;
    int price; // in cents
}
如果你想在菜单中列出这些,那么。。请列出以下各项:

List<MenuItem> items;
列表项;
就这么简单。
String[][]
基本上是无用的;你不能用字符串来表示价格,你也不想这样做,你的代码将陷入一个无法阅读的混乱<作为一种类型,code>String远不如
MenuItem
那么具有描述性,因此您没有机会在它所属的MenuItem类中编写与菜单项本身相关的所有代码


注意:您确实需要在MenuItem类上执行字符串、equals和hashCode。您可以自己编写它们,或者让IDE生成它们,或者使用类似的东西,或者如果您使用的是java16并且在记录上具有预览功能。

在这种情况下,Hashmap将比数组更高效。Hashmaps提供了固定时间的查找、插入和删除(平均)

实现如下所示

HashMap<String, Double> menu  = new HashMap<>();
 menu.put("burger", 5.50);
 menu.containsKey("burger"); //true
 menu.get("burger"); //5.50
HashMap菜单=新建HashMap();
菜单。放入(“汉堡”,5.50);
菜单。汉堡包(“汉堡”)//真的
菜单。获取(“汉堡”)//5.50

在这种情况下,Hashmap将比数组更有效。Hashmaps提供了固定时间的查找、插入和删除(平均)

实现如下所示

HashMap<String, Double> menu  = new HashMap<>();
 menu.put("burger", 5.50);
 menu.containsKey("burger"); //true
 menu.get("burger"); //5.50
HashMap菜单=新建HashMap();
菜单。放入(“汉堡”,5.50);
菜单。汉堡包(“汉堡”)//真的
菜单。获取(“汉堡”)//5.50