gpt4 book ai didi

java - 实现与 Map 值的比较

转载 作者:搜寻专家 更新时间:2023-11-01 09:40:55 25 4
gpt4 key购买 nike

我需要找到一个 Integer week 配对的 Date 是最接近当前时间戳的日期。

换句话说,对 matchMap 中的值执行日期比较:

  Map<Integer, Date> matchMap = null;
for (MatchSummary match : matchList) {
String str_date = match.getDate();
Date matchDate = null;
try {
matchDate = new SimpleDateFormat("yyyy-MMM-dd'T'HH:mm:ss.SSS'Z'" , Locale.getDefault()).parse(str_date);
} catch (java.text.ParseException e) { e.printStackTrace(); }
matchMap.put(match.getWeek(),matchDate);
}

下一个 fragment 找到最接近当前时间戳的日期:

  final long now = System.currentTimeMillis();
Date closest = Collections.min(MAP_VALUE, new Comparator<Date>() {
public int compare(Date d1, Date d2) {
long diff1 = Math.abs(d1.getTime() - now);
long diff2 = Math.abs(d2.getTime() - now);
return Long.valueOf(diff1).compareTo(Long.valueOf(diff2));
}
);

MAP_VALUE 参数应该是什么才能达到目标?

最佳答案

如果我没理解错的话,您需要对应于由您的比较器确定的最低值的键。如果是,则可以找到映射中的最小条目并提取 key :

final long now = System.currentTimeMillis();
Integer closest = Collections.min(matchMap.entrySet(), new Comparator<Map.Entry<Integer, Date>>() {
@Override
public int compare(Map.Entry<Integer, Date> e1, Map.Entry<Integer, Date> e2) {
long diff1 = Math.abs(e1.getValue().getTime() - now);
long diff2 = Math.abs(e2.getValue().getTime() - now);
return Long.compare(diff1, diff2);
}
}).getKey();

关于java - 实现与 Map 值的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39884902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com