“LinkedHashMap”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第16行: | 第16行: | ||
next 则是按照 hashcode 取模之后存储元素的hash槽的位置; | next 则是按照 hashcode 取模之后存储元素的hash槽的位置; | ||
+ | |||
+ | === 测试1 === | ||
+ | <syntaxhighlight lang="java"> | ||
+ | package io.github.jihch; | ||
+ | |||
+ | import java.util.LinkedHashMap; | ||
+ | |||
+ | public class LinkedHashMapTest { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | //创建水果集合 | ||
+ | LinkedHashMap<String, String> fruits = new LinkedHashMap<>(); | ||
+ | //添加水果 | ||
+ | fruits.put("apple", "苹果"); | ||
+ | fruits.put("banana", "香蕉"); | ||
+ | fruits.put("pear", "梨子"); | ||
+ | fruits.put("grape", "葡萄"); | ||
+ | fruits.put("lemon", "柠檬"); | ||
+ | fruits.forEach((k, v) -> { | ||
+ | System.out.printf("key:%s,value:%s\n", k, v); | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="console"> | ||
+ | key:apple,value:苹果 | ||
+ | key:banana,value:香蕉 | ||
+ | key:pear,value:梨子 | ||
+ | key:grape,value:葡萄 | ||
+ | key:lemon,value:柠檬 | ||
+ | </syntaxhighlight>可以发现,元素添加的顺序和取出的顺序一致 |
2023年5月6日 (六) 11:08的版本
package java.util;
……
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
{
……
transient LinkedHashMap.Entry<K,V> head;
transient LinkedHashMap.Entry<K,V> tail;
}
结点左边的“b”是 before 的意思,是指向前驱的引用类型变量;
结点右边的“a”是 after 的意思,是指向后继的引用类型变量;
next 则是按照 hashcode 取模之后存储元素的hash槽的位置;
测试1
package io.github.jihch;
import java.util.LinkedHashMap;
public class LinkedHashMapTest {
public static void main(String[] args) {
//创建水果集合
LinkedHashMap<String, String> fruits = new LinkedHashMap<>();
//添加水果
fruits.put("apple", "苹果");
fruits.put("banana", "香蕉");
fruits.put("pear", "梨子");
fruits.put("grape", "葡萄");
fruits.put("lemon", "柠檬");
fruits.forEach((k, v) -> {
System.out.printf("key:%s,value:%s\n", k, v);
});
}
}
key:apple,value:苹果
key:banana,value:香蕉
key:pear,value:梨子
key:grape,value:葡萄
key:lemon,value:柠檬
可以发现,元素添加的顺序和取出的顺序一致