学习日记-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,直接访问不就行了吗;啥意思

相关推荐
gjf05_052 小时前
人该怎样活着呢?版本75.8
学习
li星野3 小时前
【学习记录】PCB与PCBA核心知识全解析:从设计到制造的关键细节
学习·制造
卿卿的产品经理日记4 小时前
【AI产品经理实战】Day 35|从“沉迷工具“到回归 AI 底层:Skill 收官、系统复盘与下一个 13 天
人工智能·学习·产品经理
一条泥憨鱼4 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
HY小宝F5 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
悟乙己6 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:赛题解析(一)
笔记·学习·金融
霍霍的袁6 小时前
【C++】哈希表实现指南:从原理到开放定址法、链地址法的实现
c++·学习·哈希算法·散列表·visual studio
PC2005-cloud7 小时前
MySQL学习笔记:GTID 主从复制,从原理到实践,告别传统 Binlog+Position 的痛点
笔记·学习·mysql
starsky762387 小时前
Agent学习——上下文工程(二)
学习
Dark_Fairy9 小时前
CMeKG_tools 知识图谱项目速成教程(13课共24H)
学习