Java ArrayList 和 HaspMap 鏈式添加的實現

jopen 11年前發布 | 13K 次閱讀 ArrayList Java開發

一、背景   

   在application中ArrayList  和 HaspMap 這兩個類是經常用到的。而且,一般需要處理的數據量也不會少,因為這兩個類是沒有實現鏈式添加元素的,因此我們需要不斷重復的編寫這兩個類聲明的變量添加元素,這種方式不但累贅,而且看起來非常之不優美:比如

      List list = new ArrayList();

      list.add("a");

      list.add("b");

      ...

      如果能夠鏈式添加的話,我們就可以簡潔且優美地添加元素了:如

      List list = new ArrayList();

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

二、 實現方式

    編寫需要實現的類的代理類。代理類繼承需要實現的類,對添加元素的方法進行封裝,然后返回代理類。

三、ArrayList 和 HaspMap 代理類的實現 

  1、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!");
    }

}


  1、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;
    }

} 

四、例子

 

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!