java在此场景中使用数据结构
我有以下表格中的数据-
01/04/2011 - {00:00,1.0} ; {01:00,2.0} ; {02:00,1.5} ;{04:00,2.3}
02/04/2011 - {00:00,2.0} ; {01:00,2.1} ; {02:00,1.5} ;{04:00,2.3}
03/04/2011 - {00:00,3.0} ; {01:00,2.0} ; {02:00,1.6} ;{04:00,2.3}
04/04/2011 - {00:00,1.0} ; {01:00,2.5} ; {02:00,1.57} ;{04:00,2.3}
05/04/2011 - {00:00,1.9} ; {01:00,2.7} ; {02:00,1.5} ;{04:00,2.3}
06/04/2011 - {00:00,1.08} ; {01:00,2.02} ; {02:00,1.9} ;{04:00,2.3}
07/04/2011 - {00:00,1.7} ; {01:00,2.0} ; {02:00,1.10} ;{04:00,2.3}
我必须将它们存储在一些数据结构中,以便使用日期作为键来访问它们。同样,对于特定的一天,{k,v}对应该按照插入的方式排序
请建议在这种情况下使用哪种数据结构最好,并说明使用的原因。提前谢谢
# 1 楼答案
我认为最好的解决方案是这样的结构: http://download.oracle.com/javase/1.4.2/docs/api/java/util/LinkedHashMap.html
条目按插入顺序保存。 还有一点很好——由于密钥是散列的,所以列表中的搜索速度更快
# 2 楼答案
在我看来像是一个MultiMap
# 3 楼答案
对我来说,听起来就像一个
Map<Date,List<Record>>
。如果使用HashMap
,则查找给定日期将是一个O(1)操作。使用这种方法没有特定的顺序或者,您可以使用
LinkedHashMap
,然后可以保留顺序,如果您需要按日期顺序查看记录,这可能很有用# 4 楼答案
从示例数据来看,每个日期的值似乎只是每个小时的数字集合。因此,如果每个数字始终只有一个日期和时间,则可以简单地使用
Map<Date, Float>
。例如,“01/04/2011 00:00”是“1.0”,而“01/04/2011 01:00”是“2.0”。您可以使用TreeMap<Date, Float>
将它们按顺序排列,并使用subMap()
方法提取所需的日期范围