【发布时间】:2012-03-01 13:38:42
【问题描述】:
我想知道哪个更有效,为什么?
1)
List<Blah> foo;
...
return ImmutableList.copyOf(foo);
或
2)
List<Blah> foo;
...
return new ImmutableList.Builder<Blah>().addAll(foo).build();
【问题讨论】:
-
您是否认为这是您的性能瓶颈?因为除非您有特定理由来关心它的效率,否则您现在应该忽略该方面并使用更易读的方面(即第一个方面)。
-
在我开始在我的项目中使用 Guava 之前,我只是好奇。我不确定哪个是“正确”的方式
-
如果有一个简单的单方法调用方式可以完全满足您的要求,并且有一个对象构造和两种方法调用方式来做(某种)相同的事情,那么我每次都会选择更简单的一个。
-
@user973479 甚至在你脑海中的首要问题是哪个更有效是错误的。如果出于某种怪异的原因,单个方法调用的效率较低,那将只是一个最终有人会修复的错误。
-
想要了解什么更有效以及图书馆是如何工作的并不是错误的。如果您因为性能而更喜欢更难阅读的书,而没有充分的理由关心上下文中的性能,那么这只会被误导。问题是“什么更有效,为什么”而不是“我应该使用哪个”。