通过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);
    }
}
相关推荐
青春不朽51220 小时前
Python 的 list append 为什么是均摊 O(1)?拆开过度分配那张表,看容量翻倍背后的暗账
java·python·list
纪念 2292 天前
C++ list讲解
c++·windows·list
闻缺陷则喜何志丹2 天前
vc入门宝典(九)
数据结构·list·mfc·存储·null·class
凉茶钱3 天前
list:哨兵节点,const_iterator 和 const iterator的区别与迭代器失效
数据结构·c++·list
lojox4 天前
C++ 手写 STL list(双向循环链表)原理剖析与实现
c++·链表·list
longlongzihan8 天前
C++ 常用数据结构速查:vector、stack、queue、list、树、图、哈希表等声明与核心操作
数据结构·c++·list
xiangyun619 天前
C++ list 模拟实现(二):const迭代器与反向迭代器,模板的黑魔法
开发语言·数据库·c++·算法·stl·list
xiangyun6110 天前
C++ list 模拟实现(一):手撕双向链表,从节点到迭代器
数据库·c++·算法·链表·stl·list
无忧.芙桃12 天前
C++语言原理与实践(十二):list类的底层实现
c++·windows·list
大鹏说大话13 天前
C++ STL 容器怎么选?vector、list、map、unordered_map 对比
开发语言·c++·list