这里举个简单例子,就实现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>>(){
@Override
public 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中即可。