Open happy1yu opened 6 years ago
在LRUCahce实现一中的remove方法有一个疑问: 首先通过Hash找到Key对应的数组位置,然后将其置为NULL 但是为什么会有一个QUEUE.poll() 方法,remove的Node不一定就是QUEUE的头结点啊
@crackh
你看的是这里的代码吧:
https://github.com/crossoverJie/Java-Interview/blob/049dea531bd962a5ae3285a74592abd5e148396e/src/main/java/com/crossoverjie/actual/LRUAbstractMap.java#L41
这个版本的 LRU 并不完整(这点确实有问题),有些 bug,不过可以看下思路,以及 HashMap 的一个写入、获取流程。
建议你查看:
https://github.com/crossoverJie/Java-Interview/blob/049dea531bd962a5ae3285a74592abd5e148396e/src/main/java/com/crossoverjie/actual/LRUMap.java#L13
这里没有实现 remove 函数,不过也挺简单。
删除时只需要将 cacheMap 内的数据移除,以及从内部的链表移除即可。
cacheMap
在LRUCahce实现一中的remove方法有一个疑问: 首先通过Hash找到Key对应的数组位置,然后将其置为NULL 但是为什么会有一个QUEUE.poll() 方法,remove的Node不一定就是QUEUE的头结点啊