我想知道哪个更有效率,为什么?
1)
List<Blah> foo;
...
return ImmutableList.copyOf(foo);
Run Code Online (Sandbox Code Playgroud)
要么
2)
List<Blah> foo;
...
return new ImmutableList.Builder<Blah>().addAll(foo).build();
Run Code Online (Sandbox Code Playgroud)
Xae*_*ess 29
我没有看到你在这里使用构建器的任何理由:
ImmutableList.copyOf比Builder在这种情况下制作更具可读性, Builder 不推断泛型类型,你必须自己指定类型作为单行,ImmutableList.copyOf 做出很好的魔术(尝试避免在安全的情况下实际复制数据),Builder#addAll调用addAll先前创建的,ArrayList同时copyOf避免为零元素和单元素集合创建任何列表(分别返回空的不可变列表和单例不可变列表),copyOf(Collection)实例不会创建临时ArrayList(copyOf(Iterable)并且copyOf(Iterator)这样做),Builder#build调用copyOf以前内部填充的ArrayList,什么带给你你的问题 - 为什么Builder在这里使用,当你有copyOf?PS我个人使用ImmutableList.builder()静态工厂而不是new ImmutableList.Builder<Blah>()构造函数 - 当分配给Builder<Blah>变量时,第一个推断泛型类型,而后者则不是.