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