- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.TreeMap;
- public class T {
- public static void main(String[] args) {
- TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();
- tm.put('a', 1);
- tm.put('c', 3);
- tm.put('y', 6);
- tm.put('f', 2);
- System.out.println(sort(tm));
- }
-
- /** TreeMap的顺序是自然顺序(如整数从小到大),也可以指定比较函数。但不是插入的顺序
- * 返回LinkedHashMap,以支持插入的顺序 */
- private static LinkedHashMap<Character,Integer> sort(TreeMap<Character,Integer> map) {
- List<Map.Entry<Character,Integer>> list = new ArrayList<Map.Entry<Character,Integer>>();
- Iterator<Map.Entry<Character,Integer>> iter = map.entrySet().iterator();
- while(iter.hasNext()) {
- Map.Entry<Character,Integer> entry = iter.next();
- list.add(entry);
- }
- Collections.sort(list, new Comparator<Object>() {
- @SuppressWarnings("unchecked")
- @Override
- public int compare(Object o1, Object o2) {
- Map.Entry<Character,Integer> entry1 = (Map.Entry<Character,Integer>)o1;
- Map.Entry<Character,Integer> entry2 = (Map.Entry<Character,Integer>)o2;
- return entry1.getValue() - entry2.getValue();
- }
- });
- LinkedHashMap<Character,Integer> sortedMap = new LinkedHashMap<Character,Integer>();
- for(Map.Entry<Character,Integer> entry : list) {
- sortedMap.put(entry.getKey(), entry.getValue());
- }
-
- return sortedMap;
- }
- }
复制代码 其实这个帖子最早我也发过,比楼上的还早。
http://bbs.itheima.com/thread-45375-1-1.html |