zoukankan      html  css  js  c++  java
  • 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);
            });
        }
    }
  • 相关阅读:
    案例(2)-- 线程不安全对象(SimpleDateFormat)
    案例(1)-- OOM异常
    jvm--工具
    死锁的产生以及定位死锁
    TCP--粘包拆包,netty的解决方式
    netty--处理器
    AtomicIntegerFieldUpdater和AtomicInteger
    NIO--ByteBuf
    Pipeline
    吴恩达机器学习笔记(四) —— BP神经网络
  • 原文地址:https://www.cnblogs.com/bulrush/p/12698344.html
Copyright © 2011-2022 走看看