gpt4 book ai didi

Java 在 HashMap 中查找最近的前一个日期

转载 作者:行者123 更新时间:2023-11-29 10:17:32 24 4
gpt4 key购买 nike

我有一个问题要解决,我需要用 Java 创建一个会计和簿记解决方案部分(目前只是后端)。他们要求系统存储给定产品的先前价格,所以我决定使用 HashMap<Date,Integer> .

现在的问题是,系统必须能够在给定的时间检索价格,用于记账、追溯购买(订单存储了商品和购买时间,因此可以很容易地回溯)。这一切都很好,但是如果购买日期与价格设置日期不匹配,则简单的 get 方法返回 null。到目前为止,我还无法逻辑出一种搜索方法,即查找购买日期之前的第一个日期,以返回价格。

有什么建议的方法可以解决这个问题吗?

最佳答案

我建议您查看 TreeMap .

要获取最接近 date 的日期,您可以这样查找:

return map.get(map.headMap(date, true).lastKey());

上面的分解:

  • previous = map.headMap(date, true) 返回所有之前的条目(包括日期)
  • closestMatchingKey = previous.lastKey() 返回该(上方)映射中的最后一个键
  • map.get(closestMatchingKey) 返回匹配项(如果没有则返回 null)

示例:

public static void main(String[] args) {

TreeMap<Date, String> map = new TreeMap<>();

map.put(new Date(0), "First");
map.put(new Date(10), "Second");
map.put(new Date(20), "Third");
map.put(new Date(30), "Fourth");
map.put(new Date(40), "Fifth");

System.out.println(getClosestPrevious(map, new Date(5)));
System.out.println(getClosestPrevious(map, new Date(10)));
System.out.println(getClosestPrevious(map, new Date(55)));
}

private static String getClosestPrevious(TreeMap<Date, String> map, Date date) {
return map.get(map.headMap(date, true).lastKey());
}

输出:

First
Second
Fifth

关于Java 在 HashMap 中查找最近的前一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777147/

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