利用数组实现缓存实例的不可变类
来源:互联网 发布:aes算法加密过程 编辑:程序博客网 时间:2024/05/23 00:10
不可变类的实例从创建后就不能被改变,所以能方便得为多个对象所共享。如果程序大量访问不同的不可变类,则可以考虑缓存这个不可变类。重复的不可变类既消耗系统性能,又毫无意义,所以讲已经创建好的实例缓存起来是个不错的策略,缓存的实现方法有很多种,性能也各有不同,本篇介绍以数组作为缓存池来实现一个不可变类
class CacheImmutale{//缓存池大小private static int MAX_SIZE=5;//缓存池private static CacheImmutale[] caches=new CacheImmutale[MAX_SIZE];//缓存池下标private static int postAt=0;private final String whoAmI;public String getwhoAmI(){return whoAmI;}private CacheImmutale(String whoAmI){this.whoAmI=whoAmI;}//重写equals方法public boolean equals(Object obj){if(this==obj){return true;}if(obj!=null&&obj.getClass()==CacheImmutale.class){return whoAmI.equals(((CacheImmutale)obj).getwhoAmI());}return false;}//重写hashCodepublic int haseCode(){return whoAmI.hashCode();}//对外的建造实例方法public static CacheImmutale valueOf(String whoAmI){//遍历缓存池 有就返回for(int i=0;i<caches.length;i++){if(caches[i]!=null&&whoAmI.equals(caches[i].getwhoAmI())){return caches[i];}}//如果缓存池满了,则从0开始重新覆盖缓存池,实现先进先出if(postAt==MAX_SIZE){caches[0]=new CacheImmutale(whoAmI);postAt=1;}else{//缓存池没满则 把实例缓存进缓存池caches[postAt++]=new CacheImmutale(whoAmI);}//返回实例return caches[postAt-1];}}public class CacheImmutaleTest {public static void main(String[] args) {CacheImmutale ci1=CacheImmutale.valueOf("你是1");CacheImmutale ci2=CacheImmutale.valueOf("你是1");CacheImmutale ci3=CacheImmutale.valueOf("你是2");//true 返回同一个实例System.out.println(ci1==ci2);//false 返回不同实例System.out.println(ci1==ci3);}
0 0
- 利用数组实现缓存实例的不可变类
- java_数组作缓存池的不可变类实例
- java一个实现实例缓存的不可变类
- 实现一个缓存实例的不可变类
- 缓存实例的不可变类
- 缓存实例的不可变类
- 缓存实例的不可变类
- 缓存实例的不可变类
- 缓存不可变类的实例
- 缓存实例的不可变类:
- java的缓存实例的不可变类
- 缓存不可变类实例的不可变类【参考疯狂Java讲义】
- JAVA中具有实例缓存的不可变类
- JAVA中具有实例缓存的不可变类
- java 缓存实例的不可变类 p186
- 52 Java final 缓存实例的不可变类
- 6.4.8 缓存实例的不可变类
- 不可变类的缓存
- Win7环境下用MyEclipse搭建Hbase开发环境
- Power oj 1782
- 黑马程序员--学习OC加强内存管理
- 全排列
- UE4 iOS设备的兼容性
- 利用数组实现缓存实例的不可变类
- 暑假集训第四周阶段二DP A - 最长公共子序列
- JNDI配置c3p0连接池
- hdu-3008魔兽争霸
- [译]Front-end-Developer-Interview-Questions
- 《Objective-C基础教程》第四章 继承
- poj1753 Flip Game DFS,枚举
- Best Time to Buy and Sell Stock II
- [Learning Linux For Fun] unit 1 1.2~1.3