下面是我的代码,我获取了Map的键,然后遍历它们以获取最后的日期,但是它似乎没有得到最后的日期。此行Set<Date> keys = date.keySet();
上的值是10.31.18和11.17.18。我希望lastDate等于11.17.18,但等于10.31.18。任何想法我在这里做错了。
Map<Date, List<Integer>> date = date(dates, noPupils);
Set<Date> keys = date.keySet();
for (Iterator<Date> it = keys.iterator(); it.hasNext();) {
while (it.hasNext()) {
Date lastDate = it.next();
答案 0 :(得分:1)
似乎您遵循了此answer。它已经说:
Collection
不一定是有序集
在您的情况下,它because不起作用
映射的顺序定义为迭代器在其上的顺序 地图的集合视图返回其元素。一些地图 像
TreeMap
类这样的实现会在 按照他们的命令;其他类,例如HashMap
类。
显然Map
date
不能保证特定的顺序。这也适用于Set<Date> keys = date.keySet()
as this
返回此映射中包含的键的
Set
视图...是 以地图为后盾...
但是解决方案很简单,并且是开箱即用的
Date lastDate = Collections.max(keys);
这是因为Date
实现了Comparable
。
答案 1 :(得分:0)
您使用的是LinkedHashMap还是HashMap?
HashMap未排序。 LinkedHashMap是有序地图,保留插入顺序。
但是我认为您应该使用TreeSet来对日期进行排序。因此,您无需关心哪种Map:)