用于替换两个地图的Java数据结构Map <a,b>,Map <b,c>通过B值链接</b,c> </a,b>

时间:2014-07-28 09:35:01

标签: java map

我在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

2 个答案:

答案 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));