获取 TreeMap 的最后 3 个值

use*_*466 1 java treemap

我有一个日期/字符串 TreeMap,我想遍历 N 最后一个条目。

TreeMap<Date,String> map = new TreeMap<Date,String>();
map.put(new Date(2011,1,1), "32,1");
map.put(new Date(2011,3,1), "35");
map.put(new Date(2011,4,5), "38,9");
map.put(new Date(2011,8,2), "57!!");
Run Code Online (Sandbox Code Playgroud)

那我迷路了。我发现了这个:

NavigableSet<Date> dates = donnees.descendingKeySet();
Run Code Online (Sandbox Code Playgroud)

然后我不知道该怎么说:

for(key in dates and i ; i from 0 to N)
{ do something }
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

tra*_*god 5

看起来您想要迭代descendingMap()

private static final int N = 3;
...
int i = 0;
for (Map.Entry entry : map.descendingMap().entrySet()) {
    if (i++ < N) {
        System.out.println(entry);
    }
}
Run Code Online (Sandbox Code Playgroud)

安慰:

2011 年 9 月 2 日星期五 11:39:05 EDT=57!
2011 年 5 月 5 日星期四 11:39:05 EDT=38,9
2011 年 4 月 1 日星期五 11:39:05 EDT=35

附录:这是Calendar在默认语言环境中使用的示例:

private static Date createDate(int year, int month, int day) {
    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day);
    return calendar.getTime();
}
...
map.put(createDate(2011, 5, 3), "3-Jun-2011");
Run Code Online (Sandbox Code Playgroud)