map按key和value排序
阿新 • • 發佈:2019-02-03
TreeMap:
預設按照key升序進行排序
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<>();
map.put("b", 123);
map.put("c", 24);
map.put("a", 56);
for (Map.Entry<String, Integer> entry : map.entrySet()){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
輸出結果:
a : 56
b : 123
c : 24
如果key想降序排列:
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
});
map.put("b", 123);
map.put("c", 24);
map.put("a", 56);
for (Map.Entry<String, Integer> entry : map.entrySet()){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
輸出結果:
c : 24
b : 123
a : 56
按照value升序排列:
public static void main(String[] args) {
TreeMap<String, Integer> map = new TreeMap<>();
map.put("b", 123);
map.put("c", 24);
map.put("a", 56);
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o1.getValue()-o2.getValue();
}
});
for (Map.Entry<String, Integer> entry : list){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
輸出結果:
c : 24
a : 56
b : 123
總結:
(1)TreeMap預設按照key升序排序,可以指定比較器。
(2)當需要返回排好序的map時,可以藉助LinkedHashMap來匯入以排好序的ArrayList中的資料。
(3)HashMap的按key或value排序,均是藉助比較器完成。具體實現類推於TreeMap。