JAVA 中LinkedHashMap要点记录
构造函数中可能出现的几个参数说明如下:
其余的几个参数都好理解,关键是最后一个参数,是LinkedHashMap区别于其余类型的HashMap的一个关键特性所在。 对于accessOrder设置为true的时候,其依据LRU的原则,会按照最近使用次数进行排序,最近使用的会被排在后面,不使用的会被排在后面。
此外,可以通过覆写removeEldestEntry方法,来实现控制此Map的最大key条数,当Map中key数量达到指定的设定值的时候,就会按照指定的排序规则,将排在最前面的数据给删除掉,然后插入新的数据(覆写方法之后,在调用put方法的时候会自动调用,无需业务代码中显式调用),示例代码如下所示:
比较适合需要排序,或者需要限制Map缓存数量、或者是需要清理最早或者最不常用的数据的场景。
但是需要注意一点: LinkedHashMap是非线程安全的,多线程场景需要注意。