久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      java中的map可以根據(jù)key排序嗎

      java中的map可以根據(jù)key排序嗎

      java中map常用排序方式:按鍵排序(sort by key), 按值排序(sort by value)。推薦:java視頻教程

      1、按鍵排序

      jdk內(nèi)置的java.util包下的TreeMap<K,V>既可滿足此類需求,向其構造方法 TreeMap(Comparator<? super K> comparator) 傳入我們自定義的比較器即可實現(xiàn)按鍵排序。

      默認升序排序方法:

      import java.util.Map; import java.util.Set; import java.util.TreeMap;   public class TEST {       public static void main(String[] args) {         TEST t = new TEST();         t.sort();     }           public void sort(){         Map<String, String> treeMap = new TreeMap<String, String>();         treeMap.put("c", "ccccc");          treeMap.put("a", "aaaaa");          treeMap.put("b", "bbbbb");          treeMap.put("d", "ddddd");          Set<String> s = treeMap.keySet();         for (String key : s) {              System.out.println(key+" : "+treeMap.get(key));          }      } }

      輸出結果:

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

      2、按值排序

      按值排序就相對麻煩些了,貌似沒有直接可用的數(shù)據(jù)結構能處理類似需求,需要我們自己轉換一下。

      Map本身按值排序是很有意義的,很多場合下都會遇到類似需求,可以認為其值是定義的某種規(guī)則或者權重。

      原理:將待排序Map中的所有元素置于一個列表中,接著使用Collections的一個靜態(tài)方法 sort(List<T> list, Comparator<? super T> c)

      來排序列表,同樣是用比較器定義比較規(guī)則。排序后的列表中的元素再依次裝入Map,為了肯定的保證Map中元素與排序后的List中的元素的順序一致,使用了LinkedHashMap數(shù)據(jù)類型。

      實現(xiàn)代碼

      public class MapSortDemo {      public static void main(String[] args) {          Map<String, String> map = new TreeMap<String, String>();          map.put("KFC", "kfc");         map.put("WNBA", "wnba");         map.put("NBA", "nba");         map.put("CBA", "cba");          Map<String, String> resultMap = sortMapByKey(map);    //按Key進行排序 //        Map<String, String> resultMap = sortMapByValue(map); //按Value進行排序          for (Map.Entry<String, String> entry : resultMap.entrySet()) {             System.out.println(entry.getKey() + " " + entry.getValue());         }     }          /**      * 使用 Map按value進行排序      * @param map      * @return      */     public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {         if (oriMap == null || oriMap.isEmpty()) {             return null;         }         Map<String, String> sortedMap = new LinkedHashMap<String, String>();         List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(                 oriMap.entrySet());         Collections.sort(entryList, new MapValueComparator());          Iterator<Map.Entry<String, String>> iter = entryList.iterator();         Map.Entry<String, String> tmpEntry = null;         while (iter.hasNext()) {             tmpEntry = iter.next();             sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());         }         return sortedMap;     } }

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號