我有一张地图,以下列格式存储一个人工资的时间序列数据
HashMap<Date,Double> salaryHistory;
变量salaryHistory可以包含从1AD到2100AD的数据.
我正在使用subMap过滤hashmap中的数据,但我在以下场景中面临挑战
考虑这样的人的工资
Jan-01-1969, 100
Jan-01-1979, 200
当用户在Jan-1-1970到Jan-1-1972之间询问工资时,subMap返回“null”,但实际上它应该返回100,因为,这个人的工资在1969年是100并且直到1979年才变化.
是否有捷径可寻?像一个图书馆.
请提供宝贵的建议
最佳答案 我发现如果你使用SortedMap而不是HashMap,你会得到你期望的行为:
Date j1969 = DateTimeUtils.convertStringToDate("1969-01-01");
Date j1974 = DateTimeUtils.convertStringToDate("1974-01-01");
Date j1979 = DateTimeUtils.convertStringToDate("1979-01-01");
Date j1989 = DateTimeUtils.convertStringToDate("1989-01-01");
TreeMap<Date, Double> treemap = new TreeMap<Date, Double>();
SortedMap<Date, Double> treemapincl = new TreeMap<Date, Double>();
// populating tree map
treemap.put(j1969, 100.0);
treemap.put(j1979, 200.0);
treemap.put(j1989, 300.0);
treemapincl=treemap.subMap(j1969,j1974);
System.out.println("Sub map values: "+treemapincl);
输出:
Sub map values: {Wed Jan 01 00:00:00 GMT-05:00 1969=100.0}