为了提高速度,LinkedHashMap散列化所有的元素,但是在遍历键值对时,却又以元素的插入顺序返回键值对(System.out.println()会迭代遍历该映射,因此可以看到遍历的结果)。此外,可以在构造器中设定LinkedHashMap,使之采用基于访问的最近最少使用(LRU)算法,于是没有被访问过的(可被看作需要删除的)元素就会出现在队列的前面。对于需要定期清理元素以节省空间的程序来说,此功能使得程序很容易得以实现。下面就是一个简单的例子,它演示了LinkedHashMap的这两种特点:
在输出中可以看到,键值对是以插入的顺序进行遍历的,甚至LRU算法的版本也是如此。但是,在LRU版本中,在(只)访问过前面六个元素后,最后三个元素移到了队列前面。然后再一次访问元素“o”时,它就被移到队列后端了。
LinkedHashMap平常用的比较少,但是却是用在相当重要的地方,利用其LRU算法可以创建对象池、连接池等等。