如何按(日期)值对TreeMap进行排序?

use*_*309 -3 java treemap

可能重复:
TreeMap按值排序可以按值
的顺序迭代的Map

我有一个类型的TreeMap <String, Date>.我想通过日期(最近的第一)对它进行排序,我不能把它们作为密钥,因为我不能保证他们将是独一无二的.有没有办法做到这一点?

Jac*_*ack 5

您无法直接执行此操作,您可以执行的操作是将集合的内容复制到新集合中,然后对其进行排序,例如:

List<Map.EntrySet<String, Date>> copy = new ArrayList<Map.EntrySet<String, Date>>(treeMap.entrySet());
Collections.sort(copy, new CustomComparator());

class CustomComparator implements Comparator<Map.Entry<String,Date>> {
  public int compareTo(Map.Entry<String,Date> e1, Map.Entry<String,Date> e2) {
    // compare your dates
  }
}
Run Code Online (Sandbox Code Playgroud)

当然,此集合不会与原始集合同步,因此每次TreeSet修改原始集合时都必须再次执行此集合.