我知道队列是通过头部和/或尾部访问的集合类型。

我还了解到,映射是一种集合类型,其中包含许多唯一键,每个键都有一个关联的值。

我需要的是一个具有固定数量值的映射,其中的键将被设置一次,而在第一次设置后将不会更改。

我无法理解的困难部分是使值充当具有固定长度的队列,可以将其按入,而不会影响键。

例如:

初始集合(最新项目在顶部):

Key1, Value1
Key2, Value2
Key3, Value3


添加新值NewValue后的集合:

Key1, NewValue
Key2, Value1
Key3, Value2


因此,我希望键保持不变,并能够通过将最旧的值推到末尾并将所有其他值向下推到末尾来添加新值。

如果框架中没有这样的类型,请有人推荐一种实现它的方法。

谢谢!

编辑:
我为什么需要这样做的一个例子:


  我需要能够访问值
  根据时间段
  创建于。
  例:
  
  密钥:0将包含今天的值
  密钥:-1将包含昨天的值
  密钥:-2将包含两天前的值
  等等
  
  每次只输入一个值
  一天,一个值将永远是
  每天都进入。

最佳答案

听起来您可以使用:

new LinkedHashMap<Long,V>(initialCapacity, loadFactor, false) {
    protected boolean removeEldestEntry(Map.Entry<Long,V> e) {
        return size() > MAX_ENTRIES;
    }
};


要在此地图中获取或放置物品,您需要规范化时间戳记,例如,将其设置为一天中的00:00:00.000。

这种方法的一个优点是,如果违反了“每天都会输入一个值”这一假设,那么它不会无声无息地失败。

09-30 13:55
查看更多