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




转载于:https://my.oschina.net/u/1262428/blog/176137

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值