gpt4 book ai didi

java - Guava ImmutableList copyOf 与 Builder

转载 作者:太空狗 更新时间:2023-10-29 23:02:46 24 4
gpt4 key购买 nike

我想知道哪个更有效,为什么?

1)

List<Blah> foo;
...
return ImmutableList.copyOf(foo);

2)

List<Blah> foo;
...
return new ImmutableList.Builder<Blah>().addAll(foo).build();

最佳答案

我看不出你应该在这里使用构建器的任何理由:

  • ImmutableList.copyOf比制作​​ Builder 更具可读性在这种情况下,
  • Builder不推断通用类型,您必须通过以下方式指定类型用作单线时自己,
  • (来自文档) ImmutableList.copyOf does good magic当使用另一个不可变集合调用时(尝试在安全的情况下避免实际复制数据),
  • (来源) Builder#addAll调用 addAll在之前创建的 ArrayList同时 copyOf避免为零元素和单元素集合创建任何列表(分别返回空的不可变列表和单例不可变列表),
  • (来源) copyOf(Collection)实例不创建临时 ArrayList (copyOf(Iterable)copyOf(Iterator) 这样做),
  • (来源) 此外,Builder#build调用 copyOf在之前内部填充的 ArrayList 上,是什么让您提出问题 - 为什么使用 Builder在这里,当你有 copyOf

附言我个人使用 ImmutableList.builder()静态工厂而不是 new ImmutableList.Builder<Blah>()构造函数 - 当分配给 Builder<Blah> 时variable 第一个推断出泛型类型,而后者则没有。

关于java - Guava ImmutableList copyOf 与 Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9517228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com