将 HashMap 转换为 List<String>,使用 String.format 连接键和值

问题描述 投票:0回答:1

如何做到这一点:

int size = ...
var a = new ArrayList<String>();
for (Map.Entry<String,Integer> e : myHashMap) {      
  a.add( String.format("%s %.3f", e.getKey(), 100.0 * e.getValue() / size));
}

使用

Stream

int size = ...
var a = myHashMap.entrySet()     
  .stream()
  .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
  .map(Map.Entry::getValue)
  .toList();

如何同时使用

getValue
getKey
并使用
String.format
组合它们?

java dictionary hashmap java-stream
1个回答
1
投票

这可以通过使用 lambda 表达式 (

e -> String.format(...)
) 而不是方法引用表达式 (
Map.Entry::getValue
) 来实现。

int size = ...
var a = myHashMap.entrySet()
  .stream()
  .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder()))
  .map(e -> String.format("%s %.3f", e.getKey(), 100.0 * e.getValue() / size))
  .toList();

感谢@Sweeper的这种方法。 一旦你找到答案,它总是显而易见的。

© www.soinside.com 2019 - 2024. All rights reserved.