List和Map的鏈式添加


package com.wing.ai.cloud.system.modular.proxy;

import java.util.ArrayList;
import java.util.Collection;

/**
 * @ProjectName: ai-cloud
 * @Package: com.wing.ai.cloud.system.modular.proxy
 * @ClassName: ArrayListProxy
 * @Author: heluwei
 * @Description: ArrayList代理類,用來實現鏈式添加
 * @Date: 2020/4/14 14:01
 * @Version: 1.0
 */
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!");
    }

    /**
     * 對 ArrayList 的 addAll() 的方法進行封轉返回  ArrayListProxy 來實現 鏈式添加
     */
    public ArrayListProxy addAllObject(Collection<? extends E> e){
        if(this.addAll(e)){
            return this;
        }
        throw new ArrayStoreException("ArrayListProxy addAll element fail!");
    }
}

使用:

package com.wing.mall.base.test;

import java.util.ArrayList;
import java.util.List;

/**
 * @ProjectName: baby
 * @Package: com.wing.mall.base.test
 * @ClassName: AddAllList
 * @Author: heluwei
 * @Description: 測試合並兩個list
 * @Date: 2020/4/14 14:47
 * @Version: 1.0
 */
public class AddAllList {
    public static void main(String[] args) {
        ArrayListProxy<String> listA = new ArrayListProxy<>();
        //鏈式添加元素
        listA.addObject("A_a").addObject("A_b");
        ArrayListProxy<String> listB = new ArrayListProxy<>();
        listB.addObject("B_a").addObject("B_b");
        ArrayListProxy<String> list = new ArrayListProxy<>();
        //鏈式合並元素
        list.addAllObject(listA).addAllObject(listB);
        list.forEach(s -> {
            System.out.println(s);
        });
    }
}

Map:

package com.wing.ai.cloud.system.modular.proxy;

/**
 * @ProjectName: ai-cloud
 * @Package: com.wing.ai.cloud.system.modular.proxy
 * @ClassName: HashMapProxy
 * @Author: heluwei
 * @Description: HashMap 的代理類 實現鏈式添加元素
 * @Date: 2020/4/14 14:03
 * @Version: 1.0
 */

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> {

    /**
     * @Description 重寫HashMap的所有構造函數---start
     * @Date 2020/4/14 14:03
     */
    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;
    }

}

 測試:

package com.wing.mall.base.test;

/**
 * @ProjectName: baby
 * @Package: com.wing.mall.base.test
 * @ClassName: TestLianShiMap
 * @Author: heluwei
 * @Description: 鏈式使用Map
 * @Date: 2020/4/14 15:32
 * @Version: 1.0
 */
public class TestLianShiMap {
    public static void main(String[] args) {
        HashMapProxy<Object, Object> mapProxy = new HashMapProxy<>();
        mapProxy.putObject("a", "a")
                .putObject("b","b");
        mapProxy.forEach((k,v) ->{
            System.out.println(k+":"+v);
        });
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM