首先,我要说的是,我是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);或者,我可以使用Hashmap吗,如果可以,那么在代码和运行时最有效的是什么。
我希望能更深入地了解在上面给定的场景中使用数组的情况。
发布于 2020-12-08 12:41:23
这是java。Java名义上是类型化的。你有概念了吗?给它起个名字!
class MenuItem {
String name;
int price; // in cents
}然后,如果您想在菜单中列出这些列表,那么..有一个这样的列表:
List<MenuItem> items;就这么简单。String[][]在很大程度上是没有用的;你不能用字符串表示价格,你也不想这样做,你的代码会变得一团糟。作为一种类型,String的描述性远不如MenuItem,并且没有机会在MenuItem类中编写与菜单项本身相关的所有代码,而这正是它所属的。
注意: YOu确实需要在该MenuItem类上使用toString、equals和hashCode impls。你可以自己编写它们,或者让你的集成开发环境生成它们,或者使用像lombok这样的东西,或者如果你使用的是java16并且有预览功能,记录。
发布于 2020-12-09 11:33:12
在这种情况下,Hashmap会比数组更有效。Hashmap提供恒定的查找、插入和删除(平均)时间。
一个实现将如下所示
HashMap<String, Double> menu = new HashMap<>();
menu.put("burger", 5.50);
menu.containsKey("burger"); //true
menu.get("burger"); //5.50https://stackoverflow.com/questions/65193148
复制相似问题