HashMap按Value排序
import java.util.*;
public class HashMapSort {
private static void mapValueSort(HashMap<String, Integer> labelsMap) {
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(labelsMap.entrySet());
list.sort(new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue() < o2.getValue() ? 1 : ((o1.getValue() == o2.getValue()) ? 0 : -1);
}
});
for (Map.Entry<String, Integer> mapping : list) {
System.out.println(mapping.getKey() + ":" + mapping.getValue());
}
}
public static void main(String[] args) {
HashMap<String, Integer> wordMap = new HashMap<String, Integer>() {{
//value为key的长度
put("这是苹果园", 5);
put("这是苹果", 4);
put("她上街买了一个苹果", 9);
put("他吃了一个苹果", 7);
put("苹果", 2);
}};
mapValueSort(wordMap);
}
}
输出:
她上街买了一个苹果:9
他吃了一个苹果:7
这是苹果园:5
这是苹果:4
苹果:2
HashMap按Key排序
import java.util.*;
public class HashMapSort {
private static void mapKeySort(HashMap<Integer, String> labelsMap) {
List<Map.Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(labelsMap.entrySet());
list.sort(new Comparator<Map.Entry<Integer, String>>() {
public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
return o1.getKey() < o2.getKey() ? 1 : ((o1.getKey() == o2.getKey()) ? 0 : -1);
}
});
for (Map.Entry<Integer, String> mapping : list) {
System.out.println(mapping.getKey() + ":" + mapping.getValue());
}
}
public static void main(String[] args) {
HashMap<Integer, String> wordMap2 = new HashMap<Integer, String>() {{
//key为value的长度
put(5, "这是苹果园");
put(4, "这是苹果");
put(9, "她上街买了一个苹果");
put(7, "他吃了一个苹果");
put(2, "苹果");
}};
mapKeySort(wordMap2);
}
}
输出
9:她上街买了一个苹果
7:他吃了一个苹果
5:这是苹果园
4:这是苹果
2:苹果
若想按值作升序排序,仅将compare中的语句
return o1.getKey() < o2.getKey() ? 1 : ((o1.getKey() == o2.getKey()) ? 0 : -1);
修改为:
return o1.getKey() < o2.getKey() ? -1 : ((o1.getKey() == o2.getKey()) ? 0 : 1);
即可。