linkedhashmap为什么是有序的-爱代码爱编程
父类是HashMap
底层存储结构是哈希表+双向链表,具有HashMap功能,双向链表链表记录了添加数据的顺序
使用一个单独的双向列表来存储插入的顺序,每个节点对既存在哈希表中,也存在双向链表中
根据元素hashCode值来决定元素的存储位置,但它同时用链表来维护元素的次序,这样使得元素看起来是以插入的顺序保存的,也就是说,当遍历LinkedHashMap集合元素时,它将会按元素的添加顺序来访问集合里的元素。所以LinkedHashMap的性能略低于HashMap,但在迭代访问全部元素时将有很好的性能,因为它以链表来维护内部顺序
有插入顺序和访问顺序
根据构造方法的accessOrder,为true就是访问顺序,false就是插入顺序
插入顺序,先添加的在前面,后添加的在后面,修改操作不影响顺序
访问顺序,执行get/put在操作后,节点会跑到链表的莫末尾,最末端是最近访问的,最开始是很久没有访问的,遍历时最先输出的是很久没有访问的
有插入顺序和访问顺序
根据构造方法的accessOrder,为true就是访问顺序,false就是插入顺序(默认值)
插入顺序,先添加的在前面,后添加的在后面,put已存在的key会修改value但不影响顺序
访问顺序,执行get/put操作后,节点会跑到链表的末尾,最末端是最近访问的,头结点是很久没访问过,遍历时先输出头部(是很久没有访问的