Java Map根据Key和value排序的代码



Java Map根据Key和value排序的代码

Java代码 收藏代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

import org.junit.Test;

public class MapSortTest {

static Map<String, Integer> MAP = new HashMap<String, Integer>();


static {
MAP.put(“ab”, 27);
MAP.put(“aa”, 25);
MAP.put(“c”, 30);
MAP.put(“e”, 21);
MAP.put(“d”, 22);
}

@Test
public void sortByKey() {
TreeMap<String, Integer> treeMap = new TreeMap<String, Integer>(MAP);

for (String key : treeMap.keySet()) {
System.out.printf(“key:%s, value:%d\n”, key, MAP.get(key));
}
}

@Test
public void sortByValue() {
ArrayList<Entry<String, Integer>> entries = new ArrayList<Entry<String, Integer>>(MAP.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return (o2.getValue() – o1.getValue()); // 降序
}
});

for (Entry<String, Integer> entry : entries) {
System.out.printf(“key:%s, value:%d\n”, entry.getKey(), entry.getValue());
}
}
}