Java LinkedHashMap替换键

wgo*_*l01 5 java map

有没有办法put()在LinkedHashMap中使用替换密钥而不会丢失最初插入密钥的顺序?

Men*_*ena 9

为同一个键设置不同的值时,不会丢失顺序。

例子

Map<String, String> map = new LinkedHashMap<String, String>();
map.put("foo", "bar");
map.put("blah", "baz");
System.out.println(map);
map.put("foo", "foo");
System.out.println(map);
Run Code Online (Sandbox Code Playgroud)

输出

{foo=bar, blah=baz}
{foo=foo, blah=baz}
Run Code Online (Sandbox Code Playgroud)

编辑

“替换”给定值的键意味着删除键值对,然后将新键与存储的值放在一起。

因此,有一个这样做的直接方式LinkedHashMap,甚至可能不被继承和不断变化的行为removeput


Ken*_*ent 5

如果您使用了 LinkedHashMap,我认为没有内置方法可以实现您的目标。您可能想要选择另一个(或设计您自己的)数据结构。

如果你必须在一个linkedhashmap上做,你可以创建一个新的LinkedHashMap,迭代旧的并放入新的,当你的目标条目到来时,用不同的键创建一个新条目,将新条目放入映射中。