1. 程式人生 > >Map按鍵排序(sort by key)

Map按鍵排序(sort by key)

integer set emp sys result null 排序 for ltm

1.需求:已知有如下map,要求按照key倒序排列遍歷。

Map<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("3", 3);
map.put("2", 2);
map.put("5", 5);
map.put("4", 4);

2.實現

①自定義排序方法,返回有序map

private Map<String,Integer> sortMapByKey(Map<String, Integer> map) {
    if(CollectionUtils.isEmpty(map)){
        
return null; } //treeMap適用於按自然順序或自定義順序遍歷鍵(key) Map<String,Integer> treeMap = new TreeMap<>(new MapKeyComparator()); treeMap.putAll(map); return treeMap; }

②自定義比較器,實現Comparator接口

/**
 * 自定義比較器
 */
class MapKeyComparator implements Comparator<String>{

    @Override
    
public int compare(String str1, String str2) { return str2.compareTo(str1); } }

③遍歷有序map

@Test
public void test1() {
    Map<String, Integer> map = new HashMap<>();
    map.put("1", 1);
    map.put("3", 3);
    map.put("2", 2);
    map.put("5", 5);
    map.put("4", 4);
    Map
<String,Integer> resultMap = sortMapByKey(map); for (Map.Entry<String,Integer> entry:resultMap.entrySet()){ System.out.println(entry.getKey()+":"+entry.getValue()); } }

3.Java8實現按照key倒序排列遍歷

public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("1", 1);
    map.put("3", 3);
    map.put("2", 2);
    map.put("5", 5);
    map.put("4", 4);
    Map<String, Integer> resultMap = new TreeMap<>((str1, str2) -> str2.compareTo(str1));
    resultMap.putAll(map);
    resultMap.forEach((key,value)-> System.out.println(key+":"+value));
}

Map按鍵排序(sort by key)