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

哪些java集合(和映射)可以按上次访问排序

  •  4
  • kostja  · 技术社区  · 14 年前

    我知道 LinkedHashMap 提供一个构造函数,您可以在其中指示是否应按访问顺序对映射进行排序,从而有效地提供一个LRU实现。你能告诉我大收藏动物园的其他收藏和地图是否提供了这个功能吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Douglas    8 年前

    我不认为我完全理解这个问题,但也许你想看看这个问题 LRUMap 执行 Commons Collections 框架。

        2
  •  1
  •   Sean Patrick Floyd    14 年前

    我不认为存在任何这样的集合或映射(但我也第一次听说了这个构造函数)。我查过了 Guava ,但我认为他们也没有解决办法。

    现在,iterator()/entrySet()方法提供了一个视图,该视图首先由LinkedHashSet/Map支持,然后由其余的数据支持(如果要反转访问顺序,则反之亦然)。

    我将使用类似Collections类中的包装器方法来实现它。

    Map<String,String> map = CollectionUtils.viewMapByAccessOrder(
                                 new HashMap<String,String>());
    List<String> list = CollectionUtils.viewListByAccessOrder(
                                 new ArrayList<String>());
    

    这实际上可能是一种对更多观众有意义的功能。我会考虑在 Guava