ArrayList 和 HaspMap 链式添加的实现


1、背景   

   在application中ArrayList  和 HaspMap 这两个类是常常用到的。并且,通常须要处理的数据量也不会少,由于这两个类是没有实现链式添加元素的,所以咱们须要不断重复的编写这两个类声明的变量添加元素,这种方式不但累赘,并且看起来很是之不优美:好比 java

      List list = new ArrayList(); app

      list.add("a"); 函数

      list.add("b"); this

      ... spa

      若是可以链式添加的话,咱们就能够简洁且优美地添加元素了:如 .net

      List list = new ArrayList(); 代理

      list.add("a").add(b).add("c"); 继承

2、 实现方式

    编写须要实现的类的代理类。代理类继承须要实现的类,对添加元素的方法进行封装,而后返回代理类。 ci

3、ArrayList 和 HaspMap 代理类的实现 

  一、ArrayList 代理类:

package proxy;

import java.util.ArrayList;
import java.util.Collection;

/**
 * ArrayList  的代理类 主要是实现链式添加元素
 * example: ArrayListProxy arrayListProxy = new ArrayListProxy();
 * arrayListProxy.addObject(a).addObject(b).addObject(c);
 */
public class ArrayListProxy<E> extends ArrayList<E>{

   //重写ArrayList的全部构造函数---start
    public ArrayListProxy(Collection<? extends E> c) {
        super(c);
    }


    public ArrayListProxy(int initialCapacity) {
        super(initialCapacity);
    }


    public ArrayListProxy() {
        super();
    }
   //重写ArrayList的全部构造函数---end

    /**
     * 对 ArrayList 的 add() 的方法进行封转返回  ArrayListProxy 来实现 链式添加
     * @param e
     * @return
     */
    public ArrayListProxy addObject(E e){
        if(this.add(e)){
            return this;
        }
      throw new ArrayStoreException("ArrayListProxy add element fail!");
    }

}
element


  一、HashMap 代理类:

package proxy;


import java.util.HashMap;
import java.util.Map;


/**
 *HashMap 的代理类 实现链式添加元素
 * example:  HashMapProxy hashMapProxy   = new HashMapProxy();
 *            hashMapProxy.putObject("a","b").putObject("c","d");
 * @param <K>
 * @param <V>
 */
public class HashMapProxy<K,V> extends HashMap<K,V> {

   //重写HashMap的全部构造函数---start
    public HashMapProxy(int initialCapacity) {
        super(initialCapacity);
    }


    public HashMapProxy() {
        super();
    }

    public HashMapProxy(Map<? extends K, ? extends V> m) {
        super(m);
    }


    public HashMapProxy(int initialCapacity, float loadFactor) {
          super(initialCapacity,loadFactor);
    }
   //重写HashMap的全部构造函数---end

    /**
     * 对 HashMap 的 put() 的方法进行封转返回  HashMapProxy 来实现 链式添加
     * @param key
     * @param value
     * @return
     */
    public HashMapProxy putObject(K key,V value){
        this.put(key, value);
        return this;
    }

}

4、例子

  ArrayListProxy proxy = new ArrayListProxy();
  proxy.addObject("a").addObject("e").addObject("c");

   HashMapProxy hashMapProxy = new HashMapProxy();    hashMapProxy.putObject("a","b").putObject("c","d").putObject("e","r");

相关文章
相关标签/搜索