如何在Java的Restaurant类中实现带单参数的printMapValue方法并使用HashMap的get方法
解决HashMap get()方法在单参数独立方法中的使用问题
我懂你研究两天get()方法的困惑——其实把它用到单参数方法里真的很简单,咱们结合你的代码一步步来弄明白:
首先,先明确你的核心需求:你需要一个只接收桌号作为参数的方法,通过HashMap的get()来获取对应桌的订单列表对吧?
第一步:先搞懂HashMap get()的基础用法
你的restaurant是HashMap<Integer, List<String>>类型,key是桌号(Integer),value是对应桌的订单列表。get(Object key)方法的逻辑很直接:传入你要找的key(桌号),它会返回对应的value(订单列表);如果这个key不存在,就返回null。
第二步:实现单参数的独立方法
你可以根据需求写两种类型的方法:
方法1:获取并打印指定桌号的订单
// 接收桌号参数,获取并打印对应订单 public void getAndPrintTableOrder(int tableNumber) { // 调用get()方法,int类型的桌号会自动装箱成Integer List<String> tableOrder = restaurant.get(tableNumber); if (tableOrder != null) { System.out.println("===== Table " + tableNumber + " Order ====="); for (String dish : tableOrder) { System.out.println("- " + dish); } } else { System.out.println("Table " + tableNumber + " has no order recorded!"); } }
方法2:直接返回指定桌号的订单列表
如果需要把订单列表返回给调用方做后续处理,可以写这个:
// 接收桌号参数,返回对应订单列表(无订单则返回null) public List<String> getTableOrder(int tableNumber) { return restaurant.get(tableNumber); }
第三步:修复你现有代码的小问题
你的printMap()方法末尾少了闭合的},printMapValue()也没写完,这些会导致编译错误,补全后的printMap()应该是这样:
public void printMap() { Set set = restaurant.entrySet(); Iterator iterator = set.iterator(); while(iterator.hasNext()) { Map.Entry e = (Map.Entry)iterator.next(); System.out.print("Table"+ " "+ e.getKey()+ " " + System.lineSeparator() + "Order:"+ System.lineSeparator() ); System.out.println(e.getValue()); } // 补全while循环的闭合括号 } // 补全方法的闭合括号
怎么调用这个新方法?
比如在主方法里测试:
public static void main(String[] args) { Restaurant rest = new Restaurant(); rest.TableOrder(); // 先初始化订单数据 rest.getAndPrintTableOrder(1); // 打印桌1的订单 rest.getAndPrintTableOrder(3); // 打印不存在的桌3,会提示无订单 }
核心就是把方法的参数作为key传入get(),然后根据返回的value做后续处理就好啦~
内容的提问来源于stack exchange,提问作者user9755736
相关产品推荐
相关产品推荐

