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

昵    称:
验证码:

相关文档: