首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinkedHashMap排序

LinkedHashMap排序
EN

Stack Overflow用户
提问于 2016-03-07 07:56:35
回答 1查看 5.8K关注 0票数 10

正如javadoc for LinkedHashMap中所指定的,如果一个键被重新插入到映射中,插入顺序不会受到影响,但是在运行下面的程序时,我注意到在更改访问顺序时再次插入相同的键。

代码语言:javascript
复制
Map<Integer, String> map = new LinkedHashMap<Integer,String>(16, .75f, true);
    map.put(new Integer(1), "Ajay");
    map.put(new Integer(2), "Vijay");
    map.put(new Integer(3), "Kiran");
    map.put(new Integer(4), "Faiz");

    for(String value:map.values()){
        System.out.println(value);
    }

    String val =map.get(new Integer(3));
    map.put(new Integer(2), "Ravi");
    System.out.println("After changes...");
    for(String value:map.values()){
        System.out.println(value);
    }

在运行上面的程序时,我得到的操作/p如下:

代码语言:javascript
复制
Ajay
Vijay
Kiran
Faiz
After changes...
Ajay
Faiz
Kiran
Ravi

当我重新插入键2使用,为什么它的访问顺序是改变的。

请帮我理解一下交货单。

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-07 08:15:43

代码语言:javascript
复制
new LinkedHashMap<Integer,String>(16, .75f, true);

使用该true,您需要指定“访问顺序”映射,而不是“插入顺序”映射。

这意味着您将按访问顺序获得值(最近访问的次数最少)。

您的getput调用都构成了“访问”。

提供了一个特殊的构造函数来创建一个链接的散列映射,其迭代顺序是最近一次访问其条目的顺序,从最近访问到最近访问(访问顺序)。这种地图非常适合于建立LRU缓存。调用put或get方法将导致对相应条目的访问(假设它在调用完成后存在)。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35838739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档