java8 實現map以value值排序
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.LinkedHashMap;
public class MapSorted{
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("A", 3);
map.put("B", 5);
map.put("C", 1);
map.put("D", 1);
map.put("E", 9);
System.out.println(map);
//如果value為java物件,則需要實現Comparable介面,重寫compareTo方法
Map<String, Integer> sortedMap = new LinkedHashMap<>();
Map<String, Integer> sortedMap2 = new LinkedHashMap<>();
//ASC
map.entrySet().stream()
.sorted(Map.Entry.<String, Integer>comparingByValue())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
System.out.println(sortedMap);
//DESC Collections.reverseOrder || reversed()
map.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.forEachOrdered(x -> sortedMap2.put(x.getKey(), x.getValue()));
// map.entrySet().stream()
// .sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
// .forEachOrdered(x -> sortedMap2.put(x.getKey(), x.getValue()));
System.out.println(sortedMap2);
//Collectors.toMap 直接返回排好序的map
map = map.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue(), (x1, x2) -> x2, LinkedHashMap::new));
// map = map.entrySet().stream()
// .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
// .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (x1, x2) -> x2, LinkedHashMap::new));
System.out.println(map);
}
}
{A=3, B=5, C=1, D=1, E=9}
{C=1, D=1, A=3, B=5, E=9}
{E=9, B=5, A=3, C=1, D=1}
{E=9, B=5, A=3, C=1, D=1}
相關文章
- Java交換map的key和value值Java
- Golang Map實現(四) map 的賦值和擴容Golang賦值
- 一個 key 能儲存多個 value 的 map --- 自定義的 MultiValueMap,實現 Map 介面
- map自定義排序,根據鍵或者值排隊排序
- map切片排序排序
- python根據字典內的值實現排序Python排序
- HashMap排序--Java8HashMap排序Java
- Java 之 Map 的鍵,值多重排序問題解決方案Java排序
- java map存取重複值、幼兒園分班問題、map按key自動排序問題Java排序
- list轉map,使用java8,stream流Java
- Map集合中value()方法與keySet、entrySet區別
- 用whistle實現map local
- javascript實現Map結構JavaScript
- map和set對vector排序排序
- c# 對JSON字串排序(KEY/VALUE)C#JSON字串排序
- 根據key集合批次從map中獲取value
- php實現 歸併排序,快速排序PHP排序
- Java中實現不可變MapJava
- 解碼 xsync 的 map 實現
- GO 中 map 的實現原理Go
- GO語言————8.5 map 的排序Go排序
- Js實現Object按照值的某個欄位(數值型別)的大小進行排序JSObject型別排序
- java實現快速排序Java排序
- Swift實現快速排序Swift排序
- js 實現堆排序JS排序
- GO 實現快速排序Go排序
- 快速排序(java實現)排序Java
- 快速排序 java實現排序Java
- Java8 中 List 轉 Map(Collectors.toMap) 使用技巧Java
- 聊一聊Java8中map的putIfAbsent,computeIfAbsent 方法Java
- mybatis中查詢出多個以key,value的屬性記錄,封裝成一個map返回的方法MyBatis封裝
- Go實現氣泡排序和快速排序Go排序
- go slice/map型別 排序(選擇排序演算法)Go型別排序演算法
- js數值排序中冒泡演算法的4種簡單實現JS排序演算法
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- Vue input文字框v-model與ref.value不能同時使用賦值,如何實現操作節點方式賦值?Vue賦值
- Map集合的按時間排序方法排序
- go 實現氣泡排序和插入排序Go排序