“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:柠檬
可以发现,元素添加的顺序和取出的顺序一致
