去某公司面试时候的一道题目,卡在这个关键的地方,关键还是要熟悉集合的那些操作。
public class Main {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("aaa", 4);
map.put("bbb", 2);
map.put("ccc", 1);
map.put("ddd", 3);
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> entry1, Map.Entry<String, Integer> entry2) {
return entry1.getValue() - entry2.getValue();
}
}
);
for(Map.Entry<String, Integer> entry : list) {
System.out.println("key="+ entry.getKey() + ", value="+entry.getValue());
}
}
}
输出结果为:
key=ccc, value=1
key=bbb, value=2
key=ddd, value=3
key=aaa, value=4
再提供一种思路:
public class Main{
public static void main(String[] args) {
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("bbb", 1);
hashMap.put("ccc", 3);
hashMap.put("aaa", 2);
hashMap.put("ddd", 0);
Map<String, Integer> treeMap = new TreeMap(new MyComparator(hashMap));
treeMap.putAll(hashMap);
Iterator<Map.Entry<String, Integer>> iterator = treeMap.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
static class MyComparator implements Comparator<String> {
Map<String, Integer> map;
public MyComparator(Map map) {
this.map = map;
}
@Override
public int compare(String key1, String key2) {
return map.get(key1) - map.get(key2);
}
}
}