代码之家  ›  专栏  ›  技术社区  ›  Kaltresian

以有限大小添加和从MAP中删除

  •  0
  • Kaltresian  · 技术社区  · 9 年前

    我想要一张带有一些重复键的有限大小的地图。当大小达到时,我想删除最旧的条目。

    例如,该数据集:

    MAX_SIZE=5;
    map.put(100,"OLDEST");
    map.put(101,"XXXX");
    map.put(101,"YYYY");
    map.put(102,"ZZZZ");
    map.put(103,"GGGG");
    

    然后我想在地图中插入一个新条目

    myLength = map.size()
    if(myLength>=MAX_SIZE){
       map.remove(the OLDEST)
    }    
    map.put(105,"NEW")
    

    我在想番石榴多地图,但如何删除多地图中最古老的条目?

    他们的钥匙很长,也许我需要做一个吗?(效率不高)

    oldest=MAX_LONG
    for(Long key:map){
         if(key<oldest){
               oldest=key
          }
    }
    map.remove(oldest)
    
    1 回复  |  直到 9 年前
        1
  •  4
  •   JB Nizet    9 年前

    使用 LinkedListMultimap :它保留了插入顺序,因此删除最旧的条目只需删除返回的列表的第一个元素 entries()