HashMap的两种排序方式
1 package Test4; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 10 public class Test { 11 12 public static void main(String[] args) { 13 Map<String, Integer> map = new HashMap<String, Integer>(); 14 map.put("d", 2); 15 map.put("c", 1); 16 map.put("b", 1); 17 map.put("a", 3); 18 19 List<Map.Entry<String, Integer>> infoIds =
new ArrayList<Map.Entry<String, Integer>>(map.entrySet()); 21 //ArrayList(Collection<? extends E> c)是ArrayList的一个不常用的构造方法,
构造一个包含指定 collection 的元素的列表。 22 23 //排序前 24 for (int i = 0; i < infoIds.size(); i++) { 25 String key= infoIds.get(i).getKey(); 26 int value= infoIds.get(i).getValue(); 27 System.out.println(key+":"+value); 28 } 29 /*输出结果: 30 d:2 31 b:1 32 c:1 33 a:3 */ 34 35 //排序 36 //重写compare方法 37 Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() { 38 public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { 39 //return (o2.getValue() - o1.getValue()); //根据value排序 40 return (o1.getKey()).toString().compareTo(o2.getKey());//根据key排序 41 } 42 }); 43 44 //排序后 45 for (int i = 0; i < infoIds.size(); i++) { 46 String key= infoIds.get(i).getKey(); 47 int value= infoIds.get(i).getValue(); 48 System.out.println(key+":"+value); 49 } 50 //根据key排序 51 //a:3 52 //b:1 53 //c:1 54 //d:2 55 //根据value排序 56 //a:3 57 //d:2 58 //b:1 59 //c:1 60 } 61 }