List更简洁的编码构建

发布于:2025-05-20 ⋅ 阅读:(13) ⋅ 点赞:(0)

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);

网站公告

今日签到

点亮在社区的每一天
去签到