List更简洁的编码构建
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"))更简洁
//封成一个静态方法@SafeVarargspublic static<T> List<T> createList(T... t) {return new ArrayList<>(Arrays.asList(t));}//直接调用List<Integer> list = createList(1, 2, 3);