LinkedHashMap源代码比较简单,由于LinkedHashMap继承自HashMap,Hash和存放那部分操作和HashMap是相同的。只要看懂了HashMap那部分代码,这个都不难看懂。
唯一与HashMap的区别就是在里面还维护了由header构成头指针形成的一个双向链表。每次addEntry和remove的时候要维护这个链表。
唯一困惑的地方是containsValue那个函数,函数注解说覆盖了HashMap的该方法,因为该方法更快,但实际上因为元素的个数是一样的,并且采用的都是暴力遍历的那种方式,复杂度都是一样的。唯一的区别是覆盖的方法更简洁些,如果硬要说这个速度比较快的话,那也应该是从指令级别上的,因为HashMap用了两层循环,而LinkedHashMap只用了一层循环。
唯一与HashMap的区别就是在里面还维护了由header构成头指针形成的一个双向链表。每次addEntry和remove的时候要维护这个链表。
唯一困惑的地方是containsValue那个函数,函数注解说覆盖了HashMap的该方法,因为该方法更快,但实际上因为元素的个数是一样的,并且采用的都是暴力遍历的那种方式,复杂度都是一样的。唯一的区别是覆盖的方法更简洁些,如果硬要说这个速度比较快的话,那也应该是从指令级别上的,因为HashMap用了两层循环,而LinkedHashMap只用了一层循环。