如何使用 Java 中的 lambda 來按鍵和值對 Map 排序?


**Map** 介面實現了**Collection **介面,該介面提供了**map** **資料** **結構**的功能。一個 Map 不包含任何**重複** **鍵**,並且每個鍵都與**單個**值相關聯。我們可以使用與它們關聯的鍵來**訪問**和**修改**值。

在下面的兩個示例中,我們可以使用 lambda 表示式按**鍵**和**值**對 Map 進行排序。

按鍵排序 Map 的示例

import java.util.*;
import java.util.stream.*;

public class MapSortUsingKeyTest {
   public static void main(String args[]) {
     
      // Sort a Map by their key
      Map<Integer, String> map = new HashMap<Integer, String>();

      map.put(2, "India");
      map.put(5, "Australia");
      map.put(3, "England");
      map.put(1, "Newzealand");
      map.put(4, "Scotland");

      Map<Integer, String> sortedMap = map.entrySet().stream()
                               .sorted(Map.Entry.comparingByKey())
                               .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                               (e1, e2) -> e2, LinkedHashMap::new));
      System.out.println("Sorted Map: " + Arrays.toString(sortedMap.entrySet().toArray()));
   }
}

輸出

Sorted Map: [1=Newzealand, 2=India, 3=England, 4=Scotland, 5=Australia]


按值排序 Map 的示例

import java.util.*;
import java.util.stream.*;

public class MapSortUsingValueTest {
   public static void main(String args[]) {
     
      //Sort a Map by their Value
      Map<Integer, String> map = new HashMap<Integer, String>();

      map.put(1, "Jaidev");
      map.put(2, "Adithya");
      map.put(3, "Vamsi");
      map.put(4, "Krishna");
      map.put(5, "Chaitanya");

      Map<Integer, String> sortedMap = map.entrySet().stream()
                               .sorted(Map.Entry.comparingByValue())
                               .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,
                               (e1, e2) -> e2, LinkedHashMap::new));
      System.out.println("Sorted Map: " + Arrays.toString(sortedMap.entrySet().toArray()));
   }
}

輸出

Sorted Map: [2=Adithya, 5=Chaitanya, 1=Jaidev, 4=Krishna, 3=Vamsi]

更新時間:2020-07-14

936 次瀏覽

啟動您的職業生涯

透過完成該課程獲取認證

開始吧
廣告
© . All rights reserved.