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");

相關文章
相關標籤/搜索