学习日记-LRU缓存成员变量,入参day1

LRU缓存关于类:成员变量声明,构造函数

总体的意思就是说把需要用到的参数,传给成员变量;同时做好封装和简化的操作

问题一:为什么 Node 构造函数里不初始化 prev 和 next?

答案:因为对于数据节点来说,它们刚被创建时,根本不知道自己该连向谁

问题二:为什么 LRUCache 构造函数里不用 this 给 head 和 tail 赋值?

答案:因为 head 和 tail 是"引用(指针)",而不是"基本数据类型"。

三。那为啥hashmap的这个不拿成入参带进去,然后this赋值

1. 谁拥有控制权?(外部规则 vs 内部实现)

  • capacity(容量) :这是 LRU 缓存的核心业务规则 。它是由使用者 (调用你代码的人)在创建缓存时决定的(比如:我要一个容量为 10 的缓存)。所以它必须作为参数传进来,并用 this.capacity = capacity 赋值给成员变量。
  • cache(HashMap) :这是 LRU 缓存为了达到目的而采用的内部数据结构 。使用者只关心"我存进去的数据能不能取出来",他们根本不关心、也不应该关心 你底层是用 HashMap 还是用数组实现的。因此,cache 是 LRU 的"私有财产",由 LRU 自己在内部悄悄初始化(new HashMap<>())即可。

四 参数和成员变量的区别

public LRUCache(){ capacity = capacity; cache = new HashMap<>(); head = new Node(0,0); tail = new Node(0,0); head.next = tail; tail.prev = head; }那你这么说我构造函数不加capacity,直接访问不就行了吗;啥意思

相关推荐
Nerd(BUG版)1 小时前
KMP学习day4--Kotlin空安全与泛型
学习·安全·kotlin
東隅已逝,桑榆非晚1 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
wdyan2972 小时前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
叼烟扛炮3 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮3 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法
Rabitebla5 小时前
【Linux操作系统】进程篇(十一):进程程序替换——从底层原理到 exec 函数族
linux·服务器·c++·笔记·学习·算法
叼烟扛炮5 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
旖旎夜光6 小时前
【C++ 基础入门】类和对象(下):初始化列表、static 成员、友元与内部类
c++·笔记·学习
LONGZHIQIN6 小时前
STM32学习笔记
笔记·stm32·学习·arm
redtank20006 小时前
纯血鸿蒙小工具三件套实测:弹幕手持、爱记录与仓库管理软件
学习·华为·智能手机·harmonyos