Mah*_*out 6 java caching dictionary hashmap
我需要创建一个缓存第三方查找服务结果的地图.请求由两个对象组成,例如,time和month.地图需要在(time, month)结果和结果之间进行映射.
我最初的想法是使一个对象有效地包装time并month进入一个元组对象,因此缓存是该对象和结果之间的映射.
有没有更好的方法来执行此操作,而无需在每次需要使用缓存时将请求包装到元组对象中?
非常感谢.
我最初的想法是使一个对象包装
time并month有效地成为一个元组对象
这是正确的想法.覆盖hashCode()和equals(Object)你的元组,以使其工作HashMap<TimeMonthTuple>,或compareTo(TimeMonthTuple)使其工作TreeMap<TimeMonthTuple>
有没有更好的方法呢?
这是最简单的方法,除非你有一个类可以替换TimeMonthTuple为有意义的东西.例如,时间和日期可以组合成一个Date对象.
在某些情况下,您可以基于原始包装器创建密钥.例如,如果time表示为自午夜以来的分钟数,并且month是介于1和12之间的数字(包括1和12),则可以将这两个值包装成一个Integer,并将其用作键:
Integer makeTimeMonthKey(int time, int month) {
    return (time * 12) + (month - 1);
}