为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2021-11-24 14:41:04
下面是我的代码,我得到了 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();
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

看来你遵循了这个答案。它已经说:

ACollection不一定是有序集

在你的情况下它不起作用,因为

地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序。一些映射实现,如TreeMap类,对它们的顺序做出特定保证;其他人,就像HashMap班级一样,没有。

并且显然Map date不能保证特定的顺序。这也适用Set<Date> keys = date.keySet() 于此

返回Set此地图中包含的键的视图......由地图支持......

但解决方案很简单,开箱即用:

Date lastDate = Collections.max(keys);

这立即起作用,因为Date实现了Comparable.


查看完整回答
反对 回复 2021-11-24
?
森栏

TA贡献1810条经验 获得超5个赞

你使用的是 LinkedHashMap 还是 HashMap?

HashMap 不是有序 Map。LinkedHashMap 是保留插入顺序的有序 Map。

但我认为您应该使用可以对日期进行排序的 TreeSet。因此,您无需关心是什么样的 Map :)


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信