我在Java中有一个简单的缓存系统,它将对象id(Integer
)与时间戳(Long
)映射,后者映射到List<Object>
。我用两张地图映射这种情况:
Map<Integer, Long> objectTimestamps = ...
Map<Long, List<Object>> timestampToList = .... //I know, Here I can use something like a Guava's MultiMap, but it is not really important at this point
我从像Guava这样的库中研究了很多集合,但是在这种情况下我没有找到任何特定的数据结构。你能提出另一种方法来保存这些数据吗?请考虑我在算法中连续读取/插入此值。
PS:在我的示例中,我将时间戳映射到Object
个实例的列表,但有时我将时间戳映射到一个简单的Object
。
答案 0 :(得分:2)
我会这样做:
public class TimestampObjects {
private long timestamp;
private List<Object> objects;
// + constructors, getters, setters
}
地图将变为:Map<Integer, TimestampObjects>
答案 1 :(得分:0)
您可以使用Apache Pair。
地图将是:Map<Integer, Pair<Long, List<Object>>
。
要在地图中添加内容,只需执行以下操作:
map.put(integerValue, Pair.of(longValue, objectList));