java从随机哈希映射中递减值
这里的上下文是指为航空公司乘客分配膳食的上下文
给定一个名为allMealsList的HashMap,它是从API响应中提取的,如下所示:
。。。我想随机选择一顿饭,然后退回,这样一个成年乘客就可以随意吃一顿。不要担心有条件的if(“成人”),我在别处处理这个问题
我正在努力减少HashMap中的正确值
我的方法如下:
public String chooseAvailableMeals(HashMap<String, Integer> allMealsList, String paxType) {
for (Iterator<Map.Entry<String, Integer>> it = allMealsList.entrySet().iterator(); it.hasNext(); ) {
Random generator = new Random();
Map.Entry<String, Integer> entry = it.next();
if (Objects.equals(paxType, "adult")) {
Object[] meals = allMealsList.keySet().toArray();
Object randomMeal = meals[generator.nextInt(meals.length)];
entry.setValue(entry.getValue() - 1);
return (String) randomMeal;
}
}
我的工作:
entry.setValue(entry.getValue() - 1);
当然,它不是递减随机键的值,而是递减第一个键的值——在本例中为“BBML”
请记住,我是一个相对的java新手,因此我确信有一种更优雅或更有效的方法来实现这一点;)。先谢谢你
# 1 楼答案
您不需要迭代
HashMap
的条目,只需通过其键检索相关值:另外,最好在这个方法之外创建一个
Random
实例,并在每次需要生成随机数时重新使用它