標籤:java hashmap arraylist map 排序
HashMap的值是沒有順序的,它是按照key的HashCode來實現的。對於這個無序的HashMap我們要怎麼來實現排序呢?(TreeMap類似)
import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;Map<String, Long> map = new HashMap<String, Long>();map.put("c", 33333L);map.put("a", 11111L);map.put("d", 44444L);map.put("e", 55555L);map.put("b", 22222L);//將map.entrySet()轉換成listList<Map.Entry<String, Long>> list = new ArrayList<Map.Entry<String, Long>>(map.entrySet());Collections.sort(list, new Comparator<Map.Entry<String, Long>>() {//降序排序@Overridepublic int compare(Entry<String, Long> o1, Entry<String, Long> o2) {//return o1.getValue().compareTo(o2.getValue());return o2.getValue().compareTo(o1.getValue());}});for (Map.Entry<String, Long> mapping : list) {System.out.println(mapping.getKey() + ":" + mapping.getValue());}
運行結果:
e:55555d:44444c:33333b:22222a:11111
Java如何對HashMap按值進行排序