首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用迭代器模式的最佳数组类型

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

Stack Overflow用户
提问于 2020-12-08 12:37:14
回答 2查看 51关注 0票数 1

首先,我要说的是,我是Java的新手,但并不是很新。

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

示例

代码语言:javascript
复制
ArrayList<String> menuItems;
 
    public PancakeHouseMenu() {
        menuItems = new ArrayList<String>();
        addItem("K&B's Pancake Breakfast",5);
代码语言:javascript
复制
String[][] menuItems;
public DinerMenu() {
        menuItems = new String[MAX_ITEMS];
        addItem("Vegetarian BLT",5);

或者,我可以使用Hashmap吗,如果可以,那么在代码和运行时最有效的是什么。

我希望能更深入地了解在上面给定的场景中使用数组的情况。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-08 12:41:23

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

代码语言:javascript
复制
class MenuItem {
    String name;
    int price; // in cents
}

然后,如果您想在菜单中列出这些列表,那么..有一个这样的列表:

代码语言:javascript
复制
List<MenuItem> items;

就这么简单。String[][]在很大程度上是没有用的;你不能用字符串表示价格,你也不想这样做,你的代码会变得一团糟。作为一种类型,String的描述性远不如MenuItem,并且没有机会在MenuItem类中编写与菜单项本身相关的所有代码,而这正是它所属的。

注意: YOu确实需要在该MenuItem类上使用toString、equals和hashCode impls。你可以自己编写它们,或者让你的集成开发环境生成它们,或者使用像lombok这样的东西,或者如果你使用的是java16并且有预览功能,记录。

票数 2
EN

Stack Overflow用户

发布于 2020-12-09 11:33:12

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

一个实现将如下所示

代码语言:javascript
复制
HashMap<String, Double> menu  = new HashMap<>();
 menu.put("burger", 5.50);
 menu.containsKey("burger"); //true
 menu.get("burger"); //5.50
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65193148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档