概论
LinkedHashMap 通过特有底层双向链表的支持,使得LinkedHashMap可以保存元素之间的顺序,例如插入顺序或者访问顺序,而HashMap因为没有双向链表的支持,所以就不能保持这种顺序,所以它的访问就是随机的了
和HashMap一样,还是通过数组存储元素的
这里的顺序指的是遍历的顺序,定义了头结点head,当我们调用迭代器进行遍历时,通过head开始遍历,通过after属性可以不断找到下一个,直到tail尾结点,从而实现顺序性。在同一个hash(其实更准确的说是同一个下标,数组index ,在上图中表现了同一列)链表内部next和HashMap.Node.next 的效果是一样的。不同点在于before和after可以连接不同hash之间的链表,也就是说双向链表是可以跨任何index 连接的,也就是说将LinkedHashMap里面的所有元素按照特定的顺序连接起来的
LinkedHashMap 的最终形态
图中的黑色箭头表示next指针,这跟HashMap是一样的;
图中的红色箭头表示before和after指针,分别指向这个节点的前面和后面一个节点,这就可以实现有序访问;
初识LinkedHashMap
我们想在页面展示一周内的消费变化情况,用echarts面积图进行展示。如下:
更多请见:http://www.mark-to-win.com/tutorial/52234.html