gpt4 book ai didi

java - 在LinkedHashMap中,当accessOrder为真时,插入顺序是否随着重新插入而改变

转载 作者:搜寻专家 更新时间:2023-11-01 03:45:44 25 4
gpt4 key购买 nike

LinkedHashMap

注释 1。 “如果将键重新插入到 map 中,插入顺序不受影响。”

注释 2。 “提供了一个特殊的构造函数来创建一个链接的 HashMap ,其迭代顺序是其条目最后被访问的顺序,从最近最少访问到最近访问(访问顺序)。”

查询:

  1. 是否重新插入(put 方法)修改该指定条目对象的最近访问,或者只是get 方法改变最近访问
  2. 如果在构建 LinkedHashMap 时 accessOrdertrue,上面的“注意 1”语句是否会出现矛盾并且插入顺序会受到影响?<

更新

按照下面的测试代码,putget 方法都改变了访问顺序。那么注释 1 显然与 LinkedHashMap 构造函数中的 accessOrder = true 不正确。

 public class Main
{
public static void main(String[] args) {

LinkedHashMap<Integer, String> map = new LinkedHashMap<>(16, .75f, true);
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
map.put(4, "D");
map.put(5, "E");
System.out.println(map);// Output: {1=A, 2=B, 3=C, 4=D, 5=E}

// get method changed access order
String dummy = map.get(2);
System.out.println(map); // Output: {1=A, 3=C, 4=D, 5=E, 2=B}

// put method changed access order
map.put(1, "Z");
System.out.println(map); // Output: {3=C, 4=D, 5=E, 2=B, 1=Z}
}
}

最佳答案

当通过 put 方法重新插入或更新映射时,插入顺序不会改变。按照上面的示例,以下两行都会更改访问顺序,但不会更改插入顺序。

map.put(1,"A");
map.put(1,"Z");

访问顺序,accessOrder = true 将根据最近访问的最少访问更改为最近访问,即

{2=B, 3=C, 4=D, 5=E, 1=A}
{2=B, 3=C, 4=D, 5=E, 1=Z}

但是Insertion order还是一样的,可以用accessOrder = false来打印,即

{1=A, 2=B, 3=C, 4=D, 5=E}

因此,插入顺序不会随着重新插入而改变,但 LinkedHashMap 中的访问顺序会改变。

关于java - 在LinkedHashMap中,当accessOrder为真时,插入顺序是否随着重新插入而改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57206201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com