对和值之间的Java映射

Mah*_*out 6 java caching dictionary hashmap

我需要创建一个缓存第三方查找服务结果的地图.请求由两个对象组成,例如,timemonth.地图需要在(time, month)结果和结果之间进行映射.

我最初的想法是使一个对象有效地包装timemonth进入一个元组对象,因此缓存是该对象和结果之间的映射.

有没有更好的方法来执行此操作,而无需在每次需要使用缓存时将请求包装到元组对象中?

非常感谢.

das*_*ght 5

我最初的想法是使一个对象包装timemonth有效地成为一个元组对象

这是正确的想法.覆盖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);
}
Run Code Online (Sandbox Code Playgroud)