按key排序
package com.yeepay.g3.core.trade.bankinterface.service;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class SortMapByKey {
public static void main(String[] args) {
Map<String,String> sortMap = new TreeMap<String,String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
sortMap.put("c", "1");
sortMap.put("a", "3");
sortMap.put("b", "4");
sortMap.put("d", "5");
Set<String> keySet = sortMap.keySet();
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext()) {
String key =iterator.next();
System.out.println(key + ":" + sortMap.get(key));
}
}
}
上面例子是对根据TreeMap的key值来进行排序的,但是有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要借助于Collections的sort(List<T> list, Comparator<? super T> c)方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较。如下:
按value排序
package com.yeepay.g3.core.trade.bankinterface.service;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.*;
public class SortMapByValue {
public static void main(String[] args) {
Map<String, String> map = new TreeMap<String, String>();
map.put("d", "5");
map.put("b", "2");
map.put("a", "9");
map.put("c", "6");
//将map.entrySet转为list
List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, String>>(){
@Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry<String, String> entry:list) {
System.out.println(entry.getKey() + "******" + entry.getValue());
}
}
}