当前位置: 首页 > news >正文

Map更简洁的编码构建

Map的链式构建需求

    jdk1.8,编码时需要手动构建一个Map

  • 传统Map构建方式

       - 声明列表,依次添加元素;

       - 利用匿名内部类 + 实例初始化块,比较简洁声明并添加元素

//1 先声明创建
Map<String, Object> createMap = new HashMap<>();//2 逐个添加元素
createMap.put("1", 1);
createMap.put("2", 2);
createMap.put("3", 3);//-------------------------------------------------//匿名内部类 + 实例初始化块:
Map<String, Object> createMap2 = new HashMap<String, Object>() {{put("1", 1);put("2", 2);put("3", 3);
}};

  • 链式构建

        -调用Builder链式调用put方法添加元素

Map<String, Object> buildMap = MapBuilder.<String, Object>builder().put("1", 1).put("2", 2).put("3", 3).build();

实现Map的链式构建

  • 定义MapBuilder工具类
  • 实现链式方法:put等
  • 返回最终构建的Map对象
import java.util.HashMap;
import java.util.Map;public class MapBuilder<K, V> {private final Map<K, V> map;private MapBuilder() {map = new HashMap<>();}public static <K, V> MapBuilder<K, V> builder() {return new MapBuilder<>();}public MapBuilder<K, V> put(K key, V value) {map.put(key, value);return this;}public Map<K, V> build() {return map;}
}

总结

  • 在方法传参时,或其他需要编码时创建一个Map时,可以利用该方法简略代码
  • 相较于声明再依次添加方案,链式调用更简略
  • 匿名内部类 + 实例初始化块的方案也比较简略,但是存在严重内存问题

相关文章:

  • 【Linux】48.高级IO(2)
  • vs2017编译ncnn库
  • PostgreSQL架构
  • C语言入门
  • Vue3 Form 表单限制输入小写字母、数字和下划线
  • 使用VGG-16模型来对海贼王中的角色进行图像分类
  • 同源策略深度防御指南:CSP 高级应用与企业微信全场景适配(含 report-uri 实战)
  • 【产品经理从0到1】用户端产品设计与用户画像
  • 华三(H3C)IRF堆叠心跳的LACP MAD、BFD MAD和ARP MAD差异
  • HJ17 坐标移动【牛客网】
  • C++之set与map介绍
  • 《光与影:33号远征队》栩栩如生的角色动画是如何创建的?
  • vue+springboot+element-ui实现table的树懒加载
  • Redis学习专题(三)主从复制
  • Java大师成长计划之第28天:处理多线程的Web应用
  • python-数据可视化(大数据、数据分析、可视化图像、HTML页面)
  • 生产专属ERP系统源码,一套集成企业财务、供应链、生产、销售等核心业务流程的管理系统
  • 第三十天打卡
  • 【Java高阶面经】1.微服务架构核心:服务注册与发现之AP vs CP选型全攻略
  • 电子电器架构 --- 汽车高性能计算
  • 企业网站建设测试题/西安seo高手
  • 上海做网站设计/怎样建立网站平台
  • 相亲网站男人拉我做外汇/广点通投放平台
  • 付费网站建设/池州网站seo
  • 免费域名网站推荐/哪里做网络推广
  • 西宁电子商务网站建设/广州seo顾问