博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java_数组作缓存池的不可变类实例
阅读量:7259 次
发布时间:2019-06-29

本文共 1262 字,大约阅读时间需要 4 分钟。

package ming;public class CacheImmutale {	private static int MAX_SIZE = 10;	private static CacheImmutale[] cache = new CacheImmutale[MAX_SIZE];	private static int pos = 0;	private final String name;	private CacheImmutale(String name) {		this.name = name;	}	public String getName() {		return this.name;	}	public static CacheImmutale valueof(String name) {		//遍历缓存对象		for (int i = 0; i < MAX_SIZE; i++) {			//如果已有相同实例,直接返回			if (cache[i] != null && cache[i].getName().equals(name)) {				return cache[i];			}		}		//如果缓存已满		if (pos == MAX_SIZE) {			//把第一个缓存对象覆盖			cache[0] = new CacheImmutale(name);			pos = 1;		} else {			//把新的对象缓存起来			cache[pos++] = new CacheImmutale(name);		}		return cache[pos - 1];	}	@Override	public boolean equals(Object obj) {		if (this == obj) {			return true;		}		if (obj != null && obj.getClass() == CacheImmutale.class) {			CacheImmutale ci = (CacheImmutale) obj;			return name.equals(ci.getName());		}		return false;	}		public int hashCode(){		return name.hashCode();	}	public static void main(String[] args) {		// TODO Auto-generated method stub		CacheImmutale c1 = CacheImmutale.valueof("hello");		CacheImmutale c2 = CacheImmutale.valueof("hello");		System.out.println(c1==c2);	}}

转载于:https://www.cnblogs.com/MarchThree/p/3720478.html

你可能感兴趣的文章
填坑之Hexo博客搭建
查看>>
Elasticsearch学习记录第二篇
查看>>
android 解码混淆过的堆栈信息
查看>>
[翻译]Scope in JavaScript
查看>>
Android逆向(一) —— AndroidManifest.xml 二进制解析
查看>>
iOS 自定义通知声音
查看>>
js 正则表达式
查看>>
函数式编程 - Swift中的Functor(函子)、Monad(单子)、Applicative
查看>>
《Java8实战》-第五章读书笔记(使用流Stream-01)
查看>>
border属性的多方位应用和实现自适应三角形
查看>>
ES6箭头函数 this指向
查看>>
给爬虫爱好者的福利 SelectGadget
查看>>
React - setState源码分析(小白可读)
查看>>
异步(一):Promise深入理解与实例分析
查看>>
WebSocket的SSL认证失败问题记录
查看>>
聊聊partition的方式
查看>>
好好的,谈什么对象
查看>>
Git工作流及发布规范(BED-FED)
查看>>
Flutter TextField详解 | 掘金技术征文
查看>>
jvm优化—— 图解垃圾回收
查看>>