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时,可以利用该方法简略代码
- 相较于声明再依次添加方案,链式调用更简略
- 匿名内部类 + 实例初始化块的方案也比较简略,但是存在严重内存问题