`
Jason(aijun)
  • 浏览: 86455 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一个通用的ProxyMap

    博客分类:
  • J2EE
阅读更多
先来一个通用的ProxyMap。如果不需要重用,这个类可以不用写。主要为了展示Proxy,delegate。

Java代码
public class ProxyMap {  
    protected Map map;  
 
    public ProxyMap(Map map) {  
        super();  
        this.map = map;  
    }  
 
    public Map getMap() {  
        return map;  
    }  
 
    public void clear() {  
        map.clear();  
    }  
 
    public boolean containsKey(Object key) {  
        return map.containsKey(key);  
    }  
 
    public boolean containsValue(Object value) {  
        return map.containsValue(value);  
    }  
 
    public Set entrySet() {  
        return map.entrySet();  
    }  
 
    public boolean equals(Object o) {  
        return map.equals(o);  
    }  
 
    public Object get(Object key) {  
        return map.get(key);  
    }  
 
    public int hashCode() {  
        return map.hashCode();  
    }  
 
    public boolean isEmpty() {  
        return map.isEmpty();  
    }  
 
    public Set keySet() {  
        return map.keySet();  
    }  
 
    public Object put(Object arg0, Object arg1) {  
        return map.put(arg0, arg1);  
    }  
 
    public void putAll(Map arg0) {  
        map.putAll(arg0);  
    }  
 
    public Object remove(Object key) {  
        return map.remove(key);  
    }  
 
    public int size() {  
        return map.size();  
    }  
 
    public Collection values() {  
        return map.values();  
    }  


public class ProxyMap {
protected Map map;

public ProxyMap(Map map) {
super();
this.map = map;
}

public Map getMap() {
return map;
}

public void clear() {
map.clear();
}

public boolean containsKey(Object key) {
return map.containsKey(key);
}

public boolean containsValue(Object value) {
return map.containsValue(value);
}

public Set entrySet() {
return map.entrySet();
}

public boolean equals(Object o) {
return map.equals(o);
}

public Object get(Object key) {
return map.get(key);
}

public int hashCode() {
return map.hashCode();
}

public boolean isEmpty() {
return map.isEmpty();
}

public Set keySet() {
return map.keySet();
}

public Object put(Object arg0, Object arg1) {
return map.put(arg0, arg1);
}

public void putAll(Map arg0) {
map.putAll(arg0);
}

public Object remove(Object key) {
return map.remove(key);
}

public int size() {
return map.size();
}

public Collection values() {
return map.values();
}
}



--------------------------------

IndexMap 继承 ProxyMap。
如果没有ProxyMap这个类,那么就不用继承。
需要自己实现所有Map的delegate方法。

IndexMap的代码几乎和 fins 给出的一样(就是copy过来的)。
只是可以截获所有的Map。而不只是HashMap。

Java代码
import java.util.ArrayList;  
import java.util.List;  
import java.util.Map;  
 
public class IndexMap extends ProxyMap{  
 
    public IndexMap(Map map) {  
        super(map);  
    }  
      
     private List list = new ArrayList();  
 
     public Object put(Object key, Object value) {  
     if (!containsKey(key)){  
     list.add(key);  
     }  
     return super.put(key, value);  
     }  
 
     public Object get(int idx){  
     return super.get(getKey(idx));  
     }  
     public int getIndex(Object key){  
     return list.indexOf(key);  
     }  
     public Object getKey(int idx){  
     if (idx>=list.size()) return null;  
     return list.get(idx);  
     }  
     public void remove(int idx){  
     Object key=getKey(idx);  
     removeFromList(getIndex(key));  
     super.remove(key);  
     }  
     public Object remove(Object key) {  
     removeFromList(getIndex(key));  
     return super.remove(key);  
     }  
     public void clear() {  
     this.list = new ArrayList();  
     super.clear();  
     }  
     private void removeFromList(int idx){  
     if (idx<list.size() && idx>=0) {  
     list.remove(idx);  
     }  
     }  

分享到:
评论

相关推荐

    一个通用的PHP广告(推广投放)竞价页订单管理系统.zip

    一个通用的PHP广告(推广投放)竞价页订单管理系统 一个通用的PHP广告(推广投放)竞价页订单管理系统 一个通用的PHP广告(推广投放)竞价页订单管理系统 一个通用的PHP广告(推广投放)竞价页订单管理系统 一个...

    基于SpringBoot搭建的一个通用的OA管理系统,以车辆管理为例.zip

    基于SpringBoot搭建的一个通用的OA管理系统,以车辆管理为例 基于SpringBoot搭建的一个通用的OA管理系统,以车辆管理为例 基于SpringBoot搭建的一个通用的OA管理系统,以车辆管理为例 基于SpringBoot搭建的一个通用...

    Nvme通用驱动 64 Nvme通用驱动 64

    Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme通用驱动 64Nvme...

    基于SpringBoot搭建的一个通用的OA管理系统源码.zip

    基于SpringBoot搭建的一个通用的OA管理系统源码.zip基于SpringBoot搭建的一个通用的OA管理系统源码.zip基于SpringBoot搭建的一个通用的OA管理系统源码.zip基于SpringBoot搭建的一个通用的OA管理系统源码.zip基于...

    设计一个通用寄存器组,16位的寄存器。(含报告)

    设计一个通用寄存器组,满足以下要求: ①通用寄存器组中有4个16位的寄存器。 ②当复位信号reset=0时,将通用寄存器组中的4个寄存器清零。 ③通用寄存器组中有1个写入端口,当DRWr=1时,在时钟clk的上升沿将数据总线...

    java 基于泛型与反射的通用 DAO

    本文将深入探讨如何结合这两种技术实现一个通用的DAO(Data Access Object)设计模式。 首先,我们来看“泛型”。泛型是Java 5引入的新特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和...

    易语言通用脱壳机 易语言通用脱壳机 易语言通用脱壳机

    然后我就写了一个基于此的通用脱壳机. 目前支持易语言的两种编译方式 独立编译 和非独立编译.自动识别并修复数据. 特别是独立编译支持相对来说有那么一点用处.因为如果你要Patch人家的程序.你当然希望Patch完以后...

    基于Python实现的一个通用的二进制数据分析工具源码+文档说明(下载即用).zip

    基于Python实现的一个通用的二进制数据分析工具源码+文档说明(下载即用).zip分析任意格式的二进制数据,还能同时查看协议文档。 基于Python实现的一个通用的二进制数据分析工具源码+文档说明(下载即用).zip分析...

    一个通用的Java线程池类

    环境:Windows XP ...这里本人翻写一个通用的线程池类,它可以用来作为工具类处理许多多线程问题。代码注释非常详尽,一行注释一行代码。 阅读对象:非常熟悉Java的基本概念,并且熟悉命令行编写代码的人员。

    基于SpringBoot+FreeMarker+MyBatis+ExtJs的一个通用后台管理系统源码(适合快速迭代开发).zip

    1、基于SpringBoot+FreeMarker+MyBatis+ExtJs实现的一个通用后台管理系统源码(适合快速迭代开发).zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计...

    javascript 封装的一个通用的Ajax function

    封装的一个通用的Ajax function 可以直接进行调用,需要传入的参数:回调函数,跳转的地址,需要传入的参数,method(get或post),失败后调用的函数 例如: var onerror = function() { alert("error"); } var ...

    一个通用的登录界面源代码加CSS样式.txt

    一个通用的登录界面源代码加CSS样式,界面简洁易改,适合各种网页网站的登录和注册页面,小白的话强烈推荐。

    Nvme通用驱动 32 Nvme通用驱动 32

    Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme通用驱动 32Nvme...

    angularjs的一个通用模板

    angularjs的一个通用模板,稍微修改一下即可用作你的课程设计什么的

    封装一个通用Dialog,使用DialogFragment

    本教程将详细介绍如何封装一个通用的Dialog,使用DialogFragment。 1. **DialogFragment简介** DialogFragment是Fragment的子类,它具有Fragment的所有特性,如生命周期管理、回退栈支持等。同时,它还能展示一个...

    AxureUX WEB端交互原型通用组件模板库 v3

    AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) AxureUX WEB端交互原型通用组件模板库 v3 (组件列表) ...

    一个通用的动态链接库类

    一个通用的动态链接库类,附带范例程序。

    C#官方通用类库及通用数据库类库

    2. 用数据库类库 DC.CommonDbLiteLib针对SqlServer,MySQL,SQLite,Oracle,ODBC,OleDb,Firebird,PostgreSql,DB2,Informix,SqlServerCe连接进行了封装,一般情况下只需要调用一个IDatabaseInfo接口即可使用,...

    一个网页通用的测试用例

    一个网页通用的测试用例,内容详尽,可供参考。

Global site tag (gtag.js) - Google Analytics