我正在尝试获取集合中的最后一个日期元素,但是它一直返回第一个?

下面是我的代码,我得到了 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();


扬帆大鱼
浏览 129回答 2
2回答

慕的地6264312

看来你遵循了这个答案。它已经说:ACollection不一定是有序集在你的情况下它不起作用,因为地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序。一些映射实现,如TreeMap类,对它们的顺序做出特定保证;其他人,就像HashMap班级一样,没有。并且显然Map&nbsp;date不能保证特定的顺序。这也适用Set<Date> keys = date.keySet()&nbsp;于此返回Set此地图中包含的键的视图......由地图支持......但解决方案很简单,开箱即用:Date&nbsp;lastDate&nbsp;=&nbsp;Collections.max(keys);这立即起作用,因为Date实现了Comparable.

森栏

你使用的是 LinkedHashMap 还是 HashMap?HashMap 不是有序 Map。LinkedHashMap 是保留插入顺序的有序 Map。但我认为您应该使用可以对日期进行排序的 TreeSet。因此,您无需关心是什么样的 Map :)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java