3 回答

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

TA貢獻1864條經驗 獲得超2個贊
考慮對@Eran的代碼進行細微更改,因為它已經為您HashMap.Entry.toString()
加入了:=
String sorted = map.entrySet().stream() .sorted(Collections.reverseOrder(Map.Entry.comparingByValue())) .map(Objects::toString) .collect(Collectors.joining(","));

TA貢獻1802條經驗 獲得超5個贊
這很容易做到,您可以使用 Steams API 來做到這一點。首先,您將映射中的每個條目映射到單個字符串 - 鍵和值的串聯字符串。一旦有了它,您就可以簡單地使用reduce()方法或collect()方法來完成它。
使用“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()` 方法。它看起來像這樣:
String concatString = map.entrySet()
.stream()
.map(element-> element.getKey().toString() + " : " + element.getValue().toString())
.collect(Collectors.reducing("", (str1,str2) -> str1 + " , " + str2)).substring(3);
兩種方法都提供相同的輸出。
添加回答
舉報