LeetCode -- 1418. 点菜展示表

这个Java程序实现了根据输入的订单列表,整理并显示每桌的点餐情况。通过使用哈希集存储菜品名,哈希表记录桌号及对应点菜数量,最终生成一个展示表格。示例中给出了不同顾客的点餐数据,程序能够正确处理并输出展示结果。
摘要由CSDN通过智能技术生成
import java.util.*;

/**
 * 1418. 点菜展示表
 *
 * 哈希Set  保存所有的餐品名称;
 * 哈希表 保存桌号及该桌点餐数量,点餐数量也用一个哈希表保存。
 *
 */

public class Solution1418 {
  public List<List<String>> displayTable(List<List<String>> orders) {
    // 菜品名称
    Set<String> nameSet = new TreeSet<>();
    // 每一桌点菜的名称与数目
    Map<Integer, Map<String, Integer>> tableOrderMap = new TreeMap();
    orders.forEach(list->{
      nameSet.add(list.get(2));
      Map<String, Integer> map = tableOrderMap.getOrDefault(Integer.valueOf(list.get(1)), new HashMap<>());
      map.put(list.get(2), map.getOrDefault(list.get(2), 0) + 1);
      tableOrderMap.put(Integer.valueOf(list.get(1)), map);
    });

    List<List<String>> resLists = new ArrayList<>();

    // 加入菜名
    List<String> menuList = new ArrayList<>();
    menuList.add("Table");
    menuList.addAll(nameSet);
    resLists.add(menuList);

    // 加入每一桌点菜种类
    tableOrderMap.forEach((k,v)->{
      List<String> orderList = new ArrayList<>();
      orderList.add(String.valueOf(k));
      for (String str : nameSet) {
        orderList.add(String.valueOf(v.getOrDefault(str, 0)));
      }
      resLists.add(orderList);
    });

    return resLists;
  }

  public static void main(String[] args) {
    List<String> list1 = new ArrayList<>();
    list1.add("David");
    list1.add("3");
    list1.add("Ceviche");

    List<String> list2 = new ArrayList<>();
    list2.add("Corina");
    list2.add("10");
    list2.add("Beef Burrito");

    List<String> list3 = new ArrayList<>();
    list3.add("David");
    list3.add("3");
    list3.add("Fried Chicken");

    List<String> list4 = new ArrayList<>();
    list4.add("Carla");
    list4.add("5");
    list4.add("Water");

    List<String> list5 = new ArrayList<>();
    list5.add("Carla");
    list5.add("5");
    list5.add("Ceviche");

    List<String> list6 = new ArrayList<>();
    list6.add("Rous");
    list6.add("3");
    list6.add("Ceviche");

    List<List<String>> inList = new ArrayList<>();
    inList.add(list1);
    inList.add(list2);
    inList.add(list3);
    inList.add(list4);
    inList.add(list5);
    inList.add(list6);

    Solution1418 solution1418 = new Solution1418();
    solution1418.displayTable(inList);
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值