Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LinkedHashMap正在按键排序_Java_Collections_Linkedhashmap - Fatal编程技术网

Java LinkedHashMap正在按键排序

Java LinkedHashMap正在按键排序,java,collections,linkedhashmap,Java,Collections,Linkedhashmap,我有一个LinkedHashMap,当我从中获取值时,它会反转插入顺序。你知道为什么吗 private final Map<Long, DD> cachedPlansById=new LinkedHashMap<Long, DD>(); cachedPlansById.put(dd.getId(), dd); 但是当我从LinkedHashMap中检索它们时,它们被重新排序如下-> valu 2010-2011年度报告1 2009年秋季瓦卢2 2010年春季瓦卢3 瓦卢

我有一个
LinkedHashMap
,当我从中获取值时,它会反转插入顺序。你知道为什么吗

private final Map<Long, DD> cachedPlansById=new LinkedHashMap<Long, DD>();
cachedPlansById.put(dd.getId(), dd);
但是当我从
LinkedHashMap
中检索它们时,它们被重新排序如下->

valu 2010-2011年度报告1
2009年秋季瓦卢2
2010年春季瓦卢3
瓦卢年度4
瓦卢瀑布5号
瓦卢之春6号
我将此用于循环:

for (Map.Entry<Long, PaymentPlan> m:cachedPlansById.entrySet()){
        System.out.println("valu "+m.getValue().getName()+" "+m.getValue().getId());
}
for(Map.Entry m:cachedPlansById.entrySet()){
System.out.println(“valu”+m.getValue().getName()+“”+m.getValue().getId());
}

能否请您提供插入值的代码

因为正如您可以通过这个小示例验证的那样,
LinkedHashMap
迭代器遵循插入顺序

    Map<Long, String> cachedPlansById = new LinkedHashMap<Long, String>();
    cachedPlansById.put(6L, "Spring");
    cachedPlansById.put(5L, "Fall");
    for (Map.Entry<Long, String> m : cachedPlansById.entrySet()) {
        System.out.println(m.getValue() + " " + m.getKey());
    }
仅供参考,它还有一个构造函数,它遵循访问顺序而不是插入顺序

提供了一个特殊的构造函数来创建一个链接的哈希映射,其 迭代的顺序是其条目最后出现的顺序 已访问,从最近访问最少到最近访问 (访问顺序)。这种地图非常适合建造LRU 储藏室。调用put或get方法会导致访问 相应的条目(假设在调用后存在) 完成)。putAll方法为每个用户生成一个条目访问权限 指定映射中的映射,按照键值映射的顺序 由指定映射的条目集迭代器提供。没有其他方法 生成条目访问。特别是对集合视图的操作 不要影响背景图的迭代顺序


给我们一个可重复的例子。问题是为什么LinkedHashMap是HashMap的实例而不是LinkedHashMap?我想我调用的是访问顺序构造函数,因为我的输出与插入顺序相反。我想我需要确保调用插入顺序构造函数。谢谢我检查了我在地图中输入条目的代码,在输入之前我正在打印键和值,所以我知道它们的顺序正确。我认为这不是问题所在。要调用访问顺序构造函数,您应该调用
Map cachedPlansById=newlinkedhashmap(5,5f,true)你能分享你插入值的部分吗?我想问题出在哪里了。我做了一个HashMap实例,它返回true,但当我做LinkedHashMap实例时,它返回false。不知道为什么要将其实例化为HashMap。我在put语句中插入值。
Spring 6
Fall 5