这里举个简单例子,就实现Map<String,String>按KEY值升序和按VALUE升序的例子,代码如下:
一、完整例子
package test;import java.util.ArrayList;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;import java.util.Set;import java.util.TreeMap;/***@Author suibibk.com*/public class Test {public static void main(String[] args) {Map<String, String> map= new HashMap<String, String>();map.put("5", "1");map.put("4", "2");map.put("1", "4");map.put("2", "3");map.put("3", "5");System.out.println(sortMapFromKey(map));System.out.println(sortMapFromValue(map));}//按KEY值升序public static Map<String, String> sortMapFromKey(Map<String,String> map){Map<String, String> map2 = new TreeMap<String, String>(new Comparator<String>() {public int compare(String obj1, String obj2) {//升序排序(反过来就是降序排序)return obj1.compareTo(obj2);}});for (Map.Entry<String, String> entry : map.entrySet()) {String key = entry.getKey();String value = entry.getValue();map2.put(key, value);}return map2;}//按VALUE值升序public static List<Map.Entry<String, String>> sortMapFromValue(Map<String,String> map){//a、要转成key先Set<Entry<String, String>> entrySet = map.entrySet();List<Map.Entry<String,String>> listMap = new ArrayList<Map.Entry<String, String>>(entrySet);//b、然后再排序Collections.sort(listMap, new Comparator<Map.Entry<String, String>>(){@Overridepublic int compare(Entry<String, String> o1,Entry<String, String> o2) {int result = ((String) o1.getValue()).compareTo(o2.getValue());return result;}});return listMap;}}
二、运行结果
{1=4, 2=3, 3=5, 4=2, 5=1}[5=1, 4=2, 2=3, 1=4, 3=5]
温馨提示下,这里按VALUE排序的输出结果是List哦,如果还想转成数组,就直接遍历放入MAP中即可。
