linkedhashmap的初始化原理
时间: 2023-10-27 19:42:22 浏览: 49
LinkedHashMap 是一种特殊的 HashMap,它在内部维护了一个双向链表,用于维护 key-value 对的顺序。LinkedHashMap 的初始化原理可以分为两个方面:初始化 Map 和初始化双向链表。
初始化 Map 的原理和 HashMap 差不多,LinkedHashMap 内部也是使用一个数组来存储数据的。不同的是,LinkedHashMap 在初始化时会额外创建一个 header 变量,它是一个双向链表的头节点,用于指向第一个插入的节点。同时,LinkedHashMap 还会创建两个 boolean 类型的变量 accessOrder 和 maintainOrder,它们用于指定 LinkedHashMap 的顺序。
如果 accessOrder 为 true,那么 LinkedHashMap 的顺序就是访问顺序,即最近访问的节点会排在链表的最后面;否则,顺序就是插入顺序,即插入的节点会排在链表的最后面。如果 maintainOrder 为 true,那么 LinkedHashMap 就会以插入顺序来维护双向链表。否则,它会以访问顺序来维护双向链表。
初始化双向链表的原理比较简单,LinkedHashMap 在插入节点时,会同时将该节点插入到链表的尾部。同时,如果 accessOrder 为 true,那么每次访问一个节点时,LinkedHashMap 会将该节点移动到链表的尾部,以维护访问顺序。
相关问题
java LinkedHashMap 初始化
Java中的LinkedHashMap是一种有序的HashMap,它继承自HashMap并实现了Map接口。LinkedHashMap的初始化过程与HashMap类似,都是通过调用相应的构造函数进行初始化。无论采用何种方式创建LinkedHashMap,其都会调用HashMap相应的构造函数。不管调用HashMap的哪个构造函数,HashMap的构造函数都会在最后调用一个init()方法进行初始化。而在LinkedHashMap中,init()方法被重写了,用于初始化它所维护的双向链表。具体来说,LinkedHashMap中的Entry增加了两个指针before和after,用于维护双向链接列表。before、after用于维护Entry插入的先后顺序,next用于维护HashMap各个桶中Entry的连接顺序。除此之外,LinkedHashMap还有一个header节点,它的作用是标志开始元素和标志结束元素。header节点不在数组中,只是用来标志开始元素和标志结束元素的。
java LinkedHashMap 初始化赋值
Java中的LinkedHashMap是一种有序的HashMap,它可以按照插入顺序或者访问顺序来维护元素的顺序。在初始化LinkedHashMap时,可以使用以下几种方法进行赋值:
1. LinkedHashMap<Object, Object> map = new LinkedHashMap<>(); // 使用默认构造函数初始化
2. LinkedHashMap<Object, Object> map1 = new LinkedHashMap<>(16, 0.75f); // 指定初始容量和负载因子进行初始化
3. LinkedHashMap<Object, Object> map2 = new LinkedHashMap<>(map); // 使用已有的Map进行初始化
4. LinkedHashMap<Object, Object> map3 = new LinkedHashMap<>(16); // 指定初始容量进行初始化
其中,第一种方法使用默认构造函数进行初始化,第二种方法可以指定初始容量和负载因子,第三种方法使用已有的Map进行初始化,第四种方法只指定初始容量。在初始化后,可以使用put方法向LinkedHashMap中添加元素,元素的顺序将会按照插入顺序或者访问顺序进行维护。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)