【问题标题】:which java collections (and maps) can be sorted by last access哪些 java 集合(和映射)可以按上次访问排序
【发布时间】:2010-09-29 07:49:08
【问题描述】:

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

【问题讨论】:

标签: java sorting collections


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为不存在任何这样的 Collections 或 Maps(但我也是第一次听说那个构造函数)。我检查了Guava,但我认为他们也没有解决方案。

    但我认为使用装饰器模式可以轻松实现。编写一个委托对象,实现你想要的接口,并将所有方法委托给一个内部对象。您的包装器还包含记录数据访问的 LinkedHashSet / LinkedHashMap(取决于您处理的是集合还是映射)。

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

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

    例如

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

    这实际上可能是对更多受众有意义的功能。我会考虑在Guava 项目中提交功能请求。

    【讨论】:

    • 那行得通,谢谢。也许我应该首先要求除 LinkedHashMap 之外的 LRU 实现 :)
    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2017-04-28
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 2015-02-12
    相关资源
    最近更新 更多