通过Builder来构建集合list和map

之前已经写过一篇通用Builder来构建实例对象的(基于Java8的新特性写一个通用的Builder工具类_java手动写一个builder-CSDN博客)但是这个builder不能构建集合,也就是list和map,今天突然心血来潮,想写写集合类的builder,这两个builder相比于通用的builder要简单易懂的多,废话不多说,直接上代码:

Mapbuilder:

复制代码
public class MapBuilder<K, V> {
    private Map<K, V> map;

    private MapBuilder(Map<K, V> map) {
        this.map = map;
    }

    public static <K, V> MapBuilder<K, V> ofMap() {
        return new MapBuilder<>(new HashMap<K, V>());
    }

    public MapBuilder<K, V> put(K key, V value) {
        this.map.put(key, value);
        return this;
    }

    public Map<K, V> build() {
        return this.map;
    }

    public static void main(String[] args) {
        Map<String, Integer> map = MapBuilder.<String, Integer>ofMap()
                .put("a", 1)
                .put("b", 2)
                .put("c", 3)
                .build();

        System.out.println(map); // 输出:{a=1, b=2, c=3}
    }
}

ListBuilder:

复制代码
public class ListBuilder<T> {
    private List<T> list;

    private ListBuilder(List<T> list) {
        this.list = list;
    }

    public static <T> ListBuilder<T> ofList() {
        return new ListBuilder(new ArrayList<T>());
    }

    public ListBuilder<T> add(T t) {
        this.list.add(t);
        return this;
    }

    public List<T> build() {
        return this.list;
    }

    public static void main(String[] args) {
        List<Integer> integers = ListBuilder.<Integer>ofList().add(1).build();
        System.err.println(integers);
    }
}
相关推荐
糕......6 小时前
Java集合框架全解析
java·开发语言·网络·学习·list
你的冰西瓜6 小时前
C++中的forward_list容器详解
开发语言·c++·stl·list
无限进步_8 小时前
C++ STL list容器深度解析与模拟实现
开发语言·数据结构·c++·windows·git·list·visual studio
月明长歌1 天前
【码道初阶】Leetcode771 宝石与石头:Set 判成员 vs List 判成员(同题两种写法的差距)
java·数据结构·leetcode·list·哈希算法·散列表
悟能不能悟2 天前
java map<String,List>判断是否有key,get(key.add(x),否则put(key,new list(){x})的新写法
java·list
智航GIS2 天前
3.2 列表(List)
数据结构·windows·list
悟能不能悟3 天前
java list.addAll介绍
java·windows·list
qq_463408423 天前
React Native跨平台技术在开源鸿蒙中使用WebView来加载鸿蒙应用的网页版或通过一个WebView桥接本地代码与鸿蒙应用
javascript·算法·react native·react.js·开源·list·harmonyos
k***92164 天前
list 迭代器:C++ 容器封装的 “行为统一” 艺术
java·开发语言·数据结构·c++·算法·list
悟能不能悟4 天前
java list=null,可以stream吗
java·windows·list