6.4.8 缓存实例的不可变类
来源:互联网 发布:linux shell 编辑:程序博客网 时间:2024/05/22 17:23
package chap6_4;import javax.swing.CellEditor;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; public CacheImmutale(String name) { // TODO Auto-generated constructor stub this.name=name; } public String getName() { return 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]; } 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 class CacheImmutaleTest { public static void main(String[] args) { CacheImmutale c1=CacheImmutale.valueOf("hello"); CacheImmutale c2=CacheImmutale.valueOf("hello"); System.out.println(c1==c2); }}
运行结果
true
该类共可以缓存MAX_SIZE个CacheImmutale对象。
是否需要隐藏CacheImmutale类的构造器完全取决于系统需求,盲目乱用缓存也可能导致系统性能下降,缓存的对象会占用系统内存,如果某个对象只使用一次,重复使用的概率不大,缓存该实例就弊大于利;反之,如果某个对象需要频发的重复使用,缓存该实例就利大于弊。
package chap6_4;public class IntegerCacheTest { public static void main(String[] args) { // TODO Auto-generated method stub Integer in1=new Integer(6); Integer in2=Integer.valueOf(6); Integer in3=Integer.valueOf(6); System.out.println(in1==in2); System.out.println(in2==in3); Integer in4=Integer.valueOf(200); Integer in5=Integer.valueOf(200); System.out.println(in4==in5); }}
0 0
- 6.4.8 缓存实例的不可变类
- 缓存实例的不可变类
- 缓存实例的不可变类
- 缓存实例的不可变类
- 缓存实例的不可变类
- 缓存不可变类的实例
- 缓存实例的不可变类:
- java的缓存实例的不可变类
- 缓存不可变类实例的不可变类【参考疯狂Java讲义】
- JAVA中具有实例缓存的不可变类
- JAVA中具有实例缓存的不可变类
- java一个实现实例缓存的不可变类
- java 缓存实例的不可变类 p186
- java_数组作缓存池的不可变类实例
- 52 Java final 缓存实例的不可变类
- 利用数组实现缓存实例的不可变类
- 实现一个缓存实例的不可变类
- 不可变类的缓存
- 深航更改机票姓名遭退票
- POJ 3253 Fence Repair
- 每日一得--RSA加密算法原理
- Service(1)
- Mark下看到的东西
- 6.4.8 缓存实例的不可变类
- @EProvider加强contentprovider
- hbase(4):hbase集群安装
- 消息队列与 ActiveMQ, RabbitMQ,ZeroMQ 等
- 32. PHP 比较运算符
- iOS利用Runtime自定义控制器POP手势动画
- ORACLE_基础十五--Loading Data into a Database
- emacs
- GOF23设计模式之装饰模式之理解