List的链式构建需求
jdk1.8,编码时需要手动构建一个List
- 传统List构建方式
- 声明列表,依次添加元素;
- 利用Arrays.asList方法声明并添加元素
//1 先声明创建
List<String> createList = new ArrayList<>();
//2 逐个添加元素
createList.add("1");
createList.add("2");
createList.add("3");
//-------------------------------------------------
//利用Arrays.asList
List<String> createList = new ArrayList<String>(Arrays.asList("1", "2", "3"));
- 链式构建
-调用Builder链式调用add方法添加元素
List<String> buildList = ListBuilder.<String>builder()
.add("1")
.add("2")
.add("3")
.build();
实现List的链式构建
- 定义ListBuilder工具类
- 实现链式方法:add等
- 返回最终构建的List对象
public class ListBuilder<T> {
private final ArrayList<T> arrayList;
private ListBuilder() {
arrayList= new ArrayList<>();
}
public static <T> ListBuilder<T> builder() {
return new ListBuilder<>();
}
public ListBuilder<T> add(T t) {
arrayList.add(t);
return this;
}
public ArrayList<T> build() {
return arrayList;
}
}
总结
- List链式构建的适用场景在于需要隐藏细节,分步链式创建减少重复代码
- 最终获取到的列表是可变列表,需要不可增删列表直接使用Arrays.asList更高效安全
- 直接使用new ArrayList(Arrays.asList("元素1","元素2","元素3"))更简洁
//封成一个静态方法
@SafeVarargs
public static<T> List<T> createList(T... t) {
return new ArrayList<>(Arrays.asList(t));
}
//直接调用
List<Integer> list = createList(1, 2, 3);