在番石榴中,Lists.newArrayList()和例如之间有什么区别(如果有的话)。 Ints.asList()用于基本类型

时间:2014-11-13 15:46:23

标签: java guava

我一直在使用番石榴collection utilities创建一个列表:

List<Integer> foo = Lists.newArrayList(1, 2, 3);

最近我找到了primitives utilities,允许这样做:

List<Integer> bar = Ints.asList(1, 2, 3);

来自the documentationfoobar都是可变的:

foo.set(0, 100);
bar.set(0, 100);

那么对于像int?

这样的原始类型,两者之间有什么区别(如果有的话)

1 个答案:

答案 0 :(得分:6)

原语不适用于泛型。此

List<Integer> foo = Lists.newArrayList(1, 2, 3);

会产生装箱每个int值的费用,并将整个内容包装在Integer[]中以传递给newArrayList。返回的List不是固定大小。

List<Integer> bar = Ints.asList(1, 2, 3);

只会导致在int[]中包含三个参数的成本,因为它是参数类型。返回的List是固定大小的