java - 如何使用其他值对 Java 中的 Map<String, String> 中的日期进行排序

标签 java dictionary

Possible Duplicate:
How to sort a Map<Key, Value> on the values in Java?

我有一个 java map Map<String, String> . map 内容<Id, Date> 。我想根据日期对这些 map 进行排序。我怎样才能做到这一点?这是打印后的 map

-------------------------------------
PTRRRRRR     08-20-2011
-------------------------------------
TESTDESC     08-01-2012
-------------------------------------
TESTMYO      12-29-2011
-------------------------------------
TESTTEST     08-01-2012
-------------------------------------
TESTPROL     08-01-2012
-------------------------------------
TESTPRO      08-01-2012
-------------------------------------
PNAMELQ      08-02-2012
-------------------------------------
TESTMYO      12-29-2011
------------------------------------

最佳答案

您可以使用这样的自定义比较器。

String data = "PTRRRRRR     08-20-2011\n" +
        "TESTDESC     08-01-2012\n" +
        "TESTMYO      12-29-2011\n" +
        "TESTTEST     08-01-2012\n" +
        "TESTPROL     08-01-2012\n" +
        "TESTPRO      08-01-2012\n" +
        "TESTPRO      08-01-2012\n" +
        "PNAMELQ      08-02-2012\n" +
        "TESTMYO      12-29-2011\n";
Map<String, String> map = new LinkedHashMap<String, String>();
for (String line : data.split("\n")) {
    String[] keyValue = line.split(" +");
    map.put(keyValue[0], keyValue[1]);
}
Map.Entry<String, String>[] entries = map.entrySet().toArray(new Map.Entry[map.size()]);
Arrays.sort(entries, new Comparator<Map.Entry<String, String>>() {
    SimpleDateFormat date = new SimpleDateFormat("MM-dd-yyyy");

    @Override
    public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
        try {
            return date.parse(o1.getValue()).compareTo(date.parse(o2.getValue());
        } catch (ParseException e) {
            throw new AssertionError(e);
        }
    }
});
for (Map.Entry entry : entries) {
    System.out.println(entry);
}

打印

PTRRRRRR=08-20-2011
TESTMYO=12-29-2011
TESTDESC=08-01-2012
TESTTEST=08-01-2012
TESTPROL=08-01-2012
TESTPRO=08-01-2012
PNAMELQ=08-02-2012

关于java - 如何使用其他值对 Java 中的 Map<String, String> 中的日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12192580/

相关文章:

java - OGL ES 2.0 平面纹理

Java套接字/序列化,对象不会更新

java - 如何使用对象内的映射从 java 中直观地获取键/值

arrays - 如何从 Swift 中的 txt 文件创建字典数组?

java - 如何将 protected 方法访问限制为仅子类

java - 如何按属性对自定义对象的 vector (即其他自定义对象的映射)进行排序?

python - 将元组转换为字典

java - 在 Spring Autowiring 时指定 map 的键

java - 在 ELKI 中将 DBSCAN 与 RStarTree 一起使用时出现 UnsupportedOperationException

python - 我可以直接使用字典本身的 for 循环在字典中定义值吗?