当前位置: 首页 > 知识库问答 >
问题:

计算百分比通过比较2地图使用java 8流API?

申屠宏胜
2023-03-14

我有两个长字符串映射,我想通过比较一个映射值和另一个映射值来计算百分比。

例如:

Map<String, Long> map1 = new ConcurrentHashMap<String, Long>();
map1.put("test1", (long) 20);
map1.put("test2", (long) 30);
Map<String, Long> map2 = new ConcurrentHashMap<String, Long>();
map2.put("test1", (long) 120);
map2.put("test2", (long) 120);

我想通过比较map2值和map1值来计算test1和test2值的平均值。

期望的结果应该是

resultmap = [test1 : "16.66%", test2 : "25%"]

共有1个答案

潘宸
2023-03-14

像这样的

private static String asPercent(long l1, long l2) {
    return String.format("%2.2f%%", ((float) l1 / l2 * 100));
}

final Map<String, String> percentMap = map1.entrySet().stream()
        .collect(Collectors.toMap(Map.Entry::getKey, entry -> asPercent(entry.getValue(), map2.get(entry.getKey()))));
System.out.println(percentMap);

这假设对于您在map1中拥有的每个键,map2中都有一个条目。

我的代码产生16.67%,而你想要16.66%;如果你真的需要截断而不是更精确(数学上)的舍入,你可能需要添加一些舍入代码。

 类似资料:
  • 这5个国家在所有奥运会上获得的奖牌中,每个国家获得的奖牌比例是多少?

  • 问题内容: 我有4个项目MySQL数据库:(数值),和。 在我的报告中,我需要通过“调查”中的数字来计算已参加调查的“雇员”的百分比。 这是我现在的声明: 表格如下: 我想按参加调查的人数来计算谁所占的百分比。即,如以上数据所示,分别为0%和95%。 问题答案: 尝试这个 在这里演示

  • 我有一个包含4个项的MySQL数据库:(数值)、、和。 在我的中,我需要根据“surveys”中的数字来计算接受调查的“employees”的百分比。 这就是我现在的说法: 下面是表格的原样: 我想根据中的数字计算参加调查的的百分比。即,如上面的数据所示,将为0%,将为95%。

  • 我试图计算数字的百分比(取自一个文本字段),并将计算值设置为另一个表单字段。为此,我尝试了下面的代码,但我发现js正在检测的键事件/小数位数不匹配。 例如,如果我在第一个输入字段中提供100(以计算1.75的百分比),根据我的js代码,我预计是1.75,但在第二个文本字段中是0.175。我知道这是一个非常简单的计算,但我无法解决这个问题。

  • 我想检测到鲍勃在以下情况下将城市从伦敦改为巴黎:

  • 假设我有一个双人课 我希望对它进行排序,首先是第一个值,然后是第二个值。现在,如果我这样做 一切都很好,列表按对的第一个值排序,但如果我这样做 它因错误而失败 好吧,所以它可能无法推断参数,所以如果我这样做 它因错误而失败 为什么它适用于comparing()而不适用于comparing()。然后比较()?