java - 按值对映射进行排序

标签 java arrays sorting dictionary hashmap

Possible Duplicate:
TreeMap sort by value

请看下面的代码

import java.util.HashMap;
import java.util.Map;

public class Mapper
{
    Map mMap;

    public Mapper()
    {
        mMap = new HashMap();
        mMap.put("A",1);
        mMap.put("B",2);
        mMap.put("C",3);
        mMap.put("D",4);
        mMap.put("E",5);
        mMap.put("F",6);

    }
}

如您所见, map 包含 2 种类型的数据。现在我需要按值对其进行排序,如果可能的话,最好按降序排列,否则没有问题,正常排序。但是,你知道下面这样的事情是不可能的

Map<String, int> treeMap = new TreeMap<String, int>(mMap);

那么,我该如何排序呢?请帮忙。

最佳答案

Map<String, Integer> mMap = new HashMap<String, Integer>();
        mMap.put("A",1);
        mMap.put("B",2);
        mMap.put("C",3);
        mMap.put("D",4);
        mMap.put("E",5);
        mMap.put("F",6);


private static Map sortByComparator(Map unsortMap) {

        List list = new LinkedList(unsortMap.entrySet());

        // sort list based on comparator
        Collections.sort(list, new Comparator() {
            public int compare(Object o1, Object o2) {
                return ((Comparable) ((Map.Entry) (o1)).getValue())
                                       .compareTo(((Map.Entry) (o2)).getValue());
            }
        });


        Map sortedMap = new LinkedHashMap();
        for (Iterator it = list.iterator(); it.hasNext();) {
            Map.Entry entry = (Map.Entry) it.next();
            sortedMap.put(entry.getKey(), entry.getValue());
        }
        return sortedMap;
    }

关于java - 按值对映射进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910056/

相关文章:

java - 使用静态嵌套类作为 Spring bean

c++ - 练习 : for cycle and array

javascript - 如何在react-redux上混合数组?

javascript - 这个冒泡排序的实现是错误的吗?

c# - 按两个变量对列表进行排序

java - Spring Boot Thymeleaf 模型属性将 HTML 标签传递到 HTML 页面

java - 如何使用 Java 通过 LAN 连接到 Access 数据库?

java - XML 编写器 Java

java - 以 hasNext 方法为条件的 while 循环不断抛出 ArrayOutOfBounds 异常? ( java )

algorithm - 我对确定解决此任务的最佳排序算法的分析是否正确?