import { util } from '@kit.ArkTS';/*** LRUCache缓存工具类(单例模式)* @author 鸿蒙布道师* @since 2025/04/21*/
export class LRUCacheUtil {private static instance: LRUCacheUtil;private lruCache: util.LRUCache<string, any>;/*** 私有构造函数,防止外部实例化*/private constructor() {this.lruCache = new util.LRUCache(64); // 默认容量为64}/*** 获取LRUCacheUtil的单例* @returns LRUCacheUtil 单例对象*/public static getInstance(): LRUCacheUtil {if (!LRUCacheUtil.instance) {LRUCacheUtil.instance = new LRUCacheUtil();}return LRUCacheUtil.instance;}/*** 判断是否包含指定key的缓存* @param key 缓存键* @returns 是否存在该key*/public has(key: string): boolean {return this.lruCache.contains(key);}/*** 获取指定key的缓存值* @param key 缓存键* @returns 缓存值,若不存在则返回undefined*/public get<T = any>(key: string): T | undefined {return this.lruCache.get(key) as T;}/*** 添加或更新缓存* @param key 缓存键* @param value 缓存值*/public put(key: string, value: any): void {this.lruCache.put(key, value);}/*** 删除指定key的缓存* @param key 缓存键*/public remove(key: string): void {this.lruCache.remove(key);}/*** 判断缓存是否为空* @returns 是否为空*/public isEmpty(): boolean {return this.lruCache.isEmpty();}/*** 获取当前缓存的容量* @returns 当前容量*/public getCapacity(): number {return this.lruCache.getCapacity();}/*** 更新缓存的容量* @param newCapacity 新的容量*/public updateCapacity(newCapacity: number): void {if (newCapacity <= 0) {throw new Error("Capacity must be greater than 0.");}this.lruCache.updateCapacity(newCapacity);}/*** 清空缓存并重置容量为默认值*/public clear(): void {this.lruCache.clear();this.lruCache.updateCapacity(64); // 重置为默认容量}
}
代码如下:
import { util } from '@kit.ArkTS';/*** LRUCache缓存工具类(单例模式)* @author 鸿蒙布道师* @since 2025/04/21*/
export class LRUCacheUtil {private static instance: LRUCacheUtil;private lruCache: util.LRUCache<string, any>;/*** 私有构造函数,防止外部实例化*/private constructor() {this.lruCache = new util.LRUCache(64); // 默认容量为64}/*** 获取LRUCacheUtil的单例* @returns LRUCacheUtil 单例对象*/public static getInstance(): LRUCacheUtil {if (!LRUCacheUtil.instance) {LRUCacheUtil.instance = new LRUCacheUtil();}return LRUCacheUtil.instance;}/*** 判断是否包含指定key的缓存* @param key 缓存键* @returns 是否存在该key*/public has(key: string): boolean {return this.lruCache.contains(key);}/*** 获取指定key的缓存值* @param key 缓存键* @returns 缓存值,若不存在则返回undefined*/public get<T = any>(key: string): T | undefined {return this.lruCache.get(key) as T;}/*** 添加或更新缓存* @param key 缓存键* @param value 缓存值*/public put(key: string, value: any): void {this.lruCache.put(key, value);}/*** 删除指定key的缓存* @param key 缓存键*/public remove(key: string): void {this.lruCache.remove(key);}/*** 判断缓存是否为空* @returns 是否为空*/public isEmpty(): boolean {return this.lruCache.isEmpty();}/*** 获取当前缓存的容量* @returns 当前容量*/public getCapacity(): number {return this.lruCache.getCapacity();}/*** 更新缓存的容量* @param newCapacity 新的容量*/public updateCapacity(newCapacity: number): void {if (newCapacity <= 0) {throw new Error("Capacity must be greater than 0.");}this.lruCache.updateCapacity(newCapacity);}/*** 清空缓存并重置容量为默认值*/public clear(): void {this.lruCache.clear();this.lruCache.updateCapacity(64); // 重置为默认容量}
}