程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java Map 按key排序和按Value排序的完成辦法

Java Map 按key排序和按Value排序的完成辦法

編輯:關於JAVA

Java Map 按key排序和按Value排序的完成辦法。本站提示廣大學習愛好者:(Java Map 按key排序和按Value排序的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java Map 按key排序和按Value排序的完成辦法正文


1、實際預備

Map是鍵值對的聚集接口,它的完成類重要包含:HashMap,TreeMap,Hashtable和LinkedHashMap等。

TreeMap:基於紅黑樹(Red-Black tree)的 NavigableMap 完成,該映照依據其鍵的天然次序停止排序,或許依據創立映照時供給的 Comparator 停止排序,詳細取決於應用的結構辦法。

HashMap的值是沒有次序的,它是依照key的HashCode來完成的,關於這個無序的HashMap我們要怎樣來完成排序呢?參照TreeMap的value排序。

Map.Entry前往Collections視圖。

2、key排序

TreeMap默許是升序的,假如我們須要轉變排序方法,則須要應用比擬器:Comparator。Comparator可以對聚集對象或許數組停止排序的比擬器接口,完成該接口的public compare(T o1,To2)辦法便可完成排序,以下:

import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class TreeMapTest {
  public static void main(String[] args) {
    Map<String, String> map = new TreeMap<String, String>(
        new Comparator<String>() {
          public int compare(String obj1, String obj2) {
            // 降序排序
            return obj2.compareTo(obj1);
          }
        });
    map.put("b", "ccccc");
    map.put("d", "aaaaa");
    map.put("c", "bbbbb");
    map.put("a", "ddddd");
    
    Set<String> keySet = map.keySet();
    Iterator<String> iter = keySet.iterator();
    while (iter.hasNext()) {
      String key = iter.next();
      System.out.println(key + ":" + map.get(key));
    }
  }
}

運轉成果以下:

d:aaaaa
c:bbbbb
b:ccccc
a:ddddd

3、value排序

下面例子是對依據TreeMap的key值來停止排序的,然則有時我們須要依據TreeMap的value來停止排序。對value排序我們就須要借助於Collections的sort(List<T> list, Comparator<? super T> c)辦法,該辦法依據指定比擬器發生的次序對指定列表停止排序。然則有一個條件前提,那就是一切的元素都必需可以或許依據所供給的比擬器來停止比擬,以下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class TreeMapTest {
  public static void main(String[] args) {
    Map<String, String> map = new TreeMap<String, String>();
    map.put("a", "ddddd");
    map.put("c", "bbbbb");
    map.put("d", "aaaaa");
    map.put("b", "ccccc");
    
    //這裡將map.entrySet()轉換成list
    List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
    //然後經由過程比擬器來完成排序
    Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
      //升序排序
      public int compare(Entry<String, String> o1,
          Entry<String, String> o2) {
        return o1.getValue().compareTo(o2.getValue());
      }
      
    });
    
    for(Map.Entry<String,String> mapping:list){ 
        System.out.println(mapping.getKey()+":"+mapping.getValue()); 
     } 
  }
}

 運轉成果以下:

d:aaaaa
c:bbbbb
b:ccccc
a:ddddd

以上這篇Java Map 按key排序和按Value排序的完成辦法就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved