最新在梳理Java,顺便分享记录下,供大家参考。从以下几个地方对比阐述两个类的异同。
存储结构
HashMap
HashTable说明:table 是一个entery列表,其中第i的位置存储所有hash之后index为i的entry,相同index的entr用链表存储。
LinkHashMap
LinkHashMap相对HashMap,LinkHashMap多了一个双向队列,新添加entry首先按照HashMap的方式存储在table中,同时会将entry加入队列的队尾。
遍历方式
HashMap
HashMap遍历方式由以上代码可以看出HashMap是一个“深度优先”的遍历方式,按照index顺序,优先遍历每个index对应的entry链。那么我们很容易得出,entry遍历输出的顺序不是存储的顺序。
LinkHashMap
LinkHashMap遍历方式LinkHashMap遍历方式是按照双向队列的顺序遍历整个entry链。由此可见entry遍历的顺序是存储的顺序。
总结一下:
1. LinkHashMap 比 HashMap多一个双向队列,用于存储遍历。
2. Hash输出是无序的,LinkHashMap输出则是有序的。
网友评论