按照key排序:
TreeMap提供了按key排序。
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Main main = new Main();
// TreeMap内自定义了按照key的比较器
Map<String, Integer> map2 = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
// 降序排序
return o2.compareTo(o1);
}
});
map2.put("aa", 1);
map2.put("bb", 5);
map2.put("ac", 2);
map2.put("cc", 3);
Set<String> keySet = map2.keySet();
Iterator<String> iter = keySet.iterator();
while (iter.hasNext()) {
String key = iter.next();
System.out.println(key + ":" + map2.get(key));
}
}
}
结果:
cc:3
bb:5
ac:2
aa:1
按照value排序:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
Main main = new Main();
Map<String, Integer> map = new HashMap<>();
map.put("aa", 1);
map.put("bb", 5);
map.put("ac", 2);
map.put("cc", 3);
//这里将map.entrySet()转换成list
// 注意,java.util.Map.Entry会在遍历Map时用到
List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
// 升序排序
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
// TODO Auto-generated method stub
return o1.getValue()-o2.getValue();
}
});
for(Map.Entry<String,Integer> mapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
}
结果:
aa:1
ac:2
cc:3
bb:5