3 回答

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以按如下方式將條目收集到一個(gè)條目中String
:
String sorted = map.entrySet().stream() .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .map(e-> e.getKey().toString() + "=" + e.getValue().toString()) .collect(Collectors.joining (","));

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
考慮對(duì)@Eran的代碼進(jìn)行細(xì)微更改,因?yàn)樗呀?jīng)為您HashMap.Entry.toString()
加入了:=
String sorted = map.entrySet().stream() .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .map(Objects::toString) .collect(Collectors.joining(","));

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
這很容易做到,您可以使用 Steams API 來(lái)做到這一點(diǎn)。首先,您將映射中的每個(gè)條目映射到單個(gè)字符串 - 鍵和值的串聯(lián)字符串。一旦有了它,您就可以簡(jiǎn)單地使用reduce()方法或collect()方法來(lái)完成它。
使用“reduce()”方法的代碼片段將如下所示:
Map<String, String> map = new HashMap<>();
map.put("sam1", "sam1");
map.put("sam2", "sam2");
String concatString = map.entrySet()
.stream()
.map(element-> element.getKey().toString() + " : " + element.getValue().toString())
.reduce("", (str1,str2) -> str1 + " , " + str2).substring(3);
System.out.println(concatString);
這將為您提供以下輸出:
sam2 : sam2 , sam1 : sam1
您還可以使用collect()' method instead ofreduce()` 方法。它看起來(lái)像這樣:
String concatString = map.entrySet()
.stream()
.map(element-> element.getKey().toString() + " : " + element.getValue().toString())
.collect(Collectors.reducing("", (str1,str2) -> str1 + " , " + str2)).substring(3);
兩種方法都提供相同的輸出。
添加回答
舉報(bào)