Java ArrayList 和 HaspMap 鏈式添加的實現
一、背景
在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");