在Java中进行缓存操作有一个非常有用的工具,那就是java.util.Map接口,它有HashMap、HashTable等几个实现类。
在计算机科学中,提高数据检索效率的关键不在于使用多么好的检索的算法,而在于根据数据的特点对数据进行组织,从而提高后续检索的效率。
哈希函数建立了从“键-值对”到哈希表地址的一个映射,有了哈希函数,我们就可以根据键来确定“键-值对”在哈希表中的位置的地址。
常用的哈希函数包括:直接定址法、数字分析法、除留余数法、乘留余数法、平方取中法、折叠法等。
作为键的对象其hashCode和equals方法必须满足下面的条件:如果两个对象相等,那么他们的hashcode必须相等。如果使用自定义类作为键的话,一定要覆盖hashcode和equals方法,不能只覆盖一个而不覆盖另一个。
提高缓存的利用率的最常用的方法是进行缓存数据淘汰,也就是给缓存设定一个最大容量的空间,这样就避免了缓存无限度地侵占内存。
常见的缓存淘汰算法有:
(1)最佳淘汰法
(2)先进先出淘汰法(FIFO)
(3)最近最久未使用淘汰法(LRU)
LRUMap类位于Commons-Collections*.jar.