我有两个哈希图(资源和requiredResources)。
目标是减少哈希表的资源数量,但这只有在两个资源都足够的情况下才能实现。

// String = name of resources available
// Integer = amount of resources available
Map<String, Integer> resources = new HashMap<>();
resources.put("gold", 10);
resources.put("silver", 10);
// String = name of resource needed
// Integer = amount of resource needed
Map<String, Integer> neededResources = new HashMap<>();
neededResources.put("gold", 2);
neededResources.put("silver", 3);


在此示例中,由于第四次尝试将没有足够的白银​​,黄金价值也没有变化,因此将需要3倍的资源。

我是Java的新手。到目前为止,我已经尝试了遍历这两个方法,但是变得很难阅读,而且我的尝试看起来很难完成该任务。

最佳答案

我认为这可能是您追求的目标。该代码可以在您的设置代码之后插入。

查找可能的支出数量:

int n = resources.entrySet().stream().mapToInt(entry -> entry.getValue()/neededResources.getOrDefault(entry.getKey(), 0)).min().getAsInt();
System.out.println(n);


版画3

花费:

resources.replaceAll((k,v) -> v-n*neededResources.getOrDefault(k,0));
System.out.println(resources);


打印{gold = 4,silver = 1}

10-04 23:33