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

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

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

问题一:为什么 Node 构造函数里不初始化 prevnext

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

问题二:为什么 LRUCache 构造函数里不用 thisheadtail 赋值?

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

三。那为啥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,直接访问不就行了吗;啥意思

相关推荐
Sunshing1522 分钟前
非自治连续系统稳定性定义与定理判据
笔记·学习
andrsted1 小时前
老师可以用小程序在线整理题库、课堂检测和错题集
学习·微信小程序·小程序·学习方法
zhangrelay2 小时前
手机-笔电-等数码产品-电池健康的一些数据-2026
笔记·学习·锂电池
y = xⁿ1 天前
DeepSeek Harness 学习日记:关于Agent接口,工具调用的底层实现
android·java·学习
HugoStudio_SWAN1 天前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
sakiko_2 天前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
存在morning2 天前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶2 天前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
凯尔萨厮2 天前
Java学习笔记十(注解)
java·笔记·学习