java - 我正在尝试获取集合中的最后一个日期元素,但是它一直返回第一个?
问题描述
下面是我的代码,我得到了我的 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();
解决方案
看来您遵循了这个答案。它已经说:
A
Collection
不一定是有序集
在你的情况下它不起作用,因为
地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序。一些地图实现,比如
TreeMap
类,对它们的顺序做出特定的保证;其他人,像HashMap
班级一样,没有。
显然,Map
date
并不能保证特定的顺序。这也适用Set<Date> keys = date.keySet()
于
返回
Set
此映射中包含的键的视图...由映射支持...
但解决方案很简单,而且开箱即用:
Date lastDate = Collections.max(keys);
这立即起作用,因为Date
实现了Comparable
.
推荐阅读
- r - 'lme' 错误 R" 尝试应用非函数
- asp.net-core-3.0 - 使用新的 JsonSerializer 升级到 net core 3.0 后,“FromBody”失败
- python - 为什么我的删除按钮没有删除我的数据库对象?姜戈
- c++ - 错误:“表达式必须具有恒定值”
- rest - 通过 API REST 调用使用 Cloud Firestore 实时更新数据
- django - 如何将反向字段值添加到 django 序列化程序数据集第 2 部分
- c# - C# 动态多维列表或数组
- javascript - 加载时的窗口调度事件不适用于内联脚本
- javascript - 根据选择标签选项显示内容
- android - 如何将 Firebase Auth 令牌传递给 webView 并在 Android 上注册通知