Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要有效处理日期的数据结构_Java_Hashtable_Date - Fatal编程技术网

Java 我需要有效处理日期的数据结构

Java 我需要有效处理日期的数据结构,java,hashtable,date,Java,Hashtable,Date,我需要的是类似于Hashtable的东西,我将用所需日期的实际价格填充它 例如:我将列出两个价格:1月1日:100美元,3月5日:89美元 如果我在哈希表中搜索price:hashtable.get2月14日,我需要它返回1月1日输入的实际价格,因为这是最后一个实际价格。正常的哈希表实现不会返回任何信息,因为在该dat上没有任何内容 我需要看看是否有这样的实现,可以根据日期范围快速找到对象 在我看来,有几种方法,但我会使用树形图或日历等 当您需要提取日期时,请尝试以下操作: 尝试获取日期 如果结

我需要的是类似于Hashtable的东西,我将用所需日期的实际价格填充它

例如:我将列出两个价格:1月1日:100美元,3月5日:89美元

如果我在哈希表中搜索price:hashtable.get2月14日,我需要它返回1月1日输入的实际价格,因为这是最后一个实际价格。正常的哈希表实现不会返回任何信息,因为在该dat上没有任何内容


我需要看看是否有这样的实现,可以根据日期范围快速找到对象

在我看来,有几种方法,但我会使用树形图或日历等

当您需要提取日期时,请尝试以下操作:

尝试获取日期 如果结果为空,则结果位于headMapdate.lastKey中
其中一个会起作用。当然,首先检查headMapdate的大小,因为如果lastKey为空,它将引发异常。

在我的头顶上,有几种方法,但我会使用树形图或日历等

当您需要提取日期时,请尝试以下操作:

尝试获取日期 如果结果为空,则结果位于headMapdate.lastKey中 其中一个会起作用。当然,请首先检查headMapdate的大小,因为如果lastKey为空,它将引发异常。

您可以使用同时包含这两者的DatePrice对象,并将它们按日期保存在列表或数组中,然后使用Collections和Arrays类中可用的二进制搜索来查找最近的日期

这将比使用TreeMap更有效地节省内存,而且看起来您不希望随机插入或删除数据,这将导致数组性能不佳。

您可以使用同时包含这两个元素的DatePrice对象,并将它们按日期保存在列表或数组排序器中,然后使用Collections和Arrays类中可用的二进制搜索来查找最近的日期


这将比使用TreeMap更有效地节省内存,而且看起来您不会希望随机插入或删除数据,这将导致数组性能下降。

创建一个带有日期、字符串的树映射。如果有人调用日期,则将字符串转换为日期并调用map.getdate,如果找到,则使用当前元素之前的键。

创建一个包含日期、字符串的树映射。如果有人调用日期,则将字符串转换为日期并调用map.getdate,如果找到,则使用当前元素之前的键。

您已经拥有了所有工具。考虑树梢。然后,您可以创建一个headmap,它只包含严格低于给定值的贴图部分。实施示例:

TreeMap<Date,Double> values = new TreeMap<Date,Double>();
...fill in stuff...
Date searchDate = ...anydate...
// Needed due to the strictly less contraint:
Date mapContraintDate = new Date(searchDate.getTime()+1); 
Double searchedValue = values.get(values.headMap(mapContraintData).lastKey);

这是有效的,因为headMap不是通过复制原始地图创建的,而是只返回一个视图。

您已经拥有了所有工具。考虑树梢。然后,您可以创建一个headmap,它只包含严格低于给定值的贴图部分。实施示例:

TreeMap<Date,Double> values = new TreeMap<Date,Double>();
...fill in stuff...
Date searchDate = ...anydate...
// Needed due to the strictly less contraint:
Date mapContraintDate = new Date(searchDate.getTime()+1); 
Double searchedValue = values.get(values.headMap(mapContraintData).lastKey);

这是有效的,因为头部地图不是通过复制原始地图创建的,而是只返回一个视图。

no。。只需要从数据库中填充价格缓存,这样我就不必在任何时候在某个随机日期需要某个产品的价格时点击db。价格不会每天变化,可能是一个月一次,关键是要快速找到价格,比如说10年前某个时候的价格。不。。只需要从数据库中填充价格缓存,这样我就不必在任何时候在某个随机日期需要某个产品的价格时点击db。价格不会每天变化,可能是一个月一次,关键是要快速找到价格,比如说10年前某个时候的价格。使用TreeMap.FloorEntryDate,Java 6可以稍微改进一下。感谢您提供关于floorEntry的提示+1这是正确的方法。使用TreeMap.FloorEntryDate,Java 6可以稍微改进一下。感谢您提供关于floorEntry的提示!