我一直在使用番石榴collection utilities创建一个列表:
List<Integer> foo = Lists.newArrayList(1, 2, 3);
最近我找到了primitives utilities,允许这样做:
List<Integer> bar = Ints.asList(1, 2, 3);
来自the documentation,foo
和bar
都是可变的:
foo.set(0, 100);
bar.set(0, 100);
那么对于像int?
这样的原始类型,两者之间有什么区别(如果有的话)答案 0 :(得分:6)
原语不适用于泛型。此
List<Integer> foo = Lists.newArrayList(1, 2, 3);
会产生装箱每个int
值的费用,并将整个内容包装在Integer[]
中以传递给newArrayList
。返回的List
不是固定大小。
此
List<Integer> bar = Ints.asList(1, 2, 3);
只会导致在int[]
中包含三个参数的成本,因为它是参数类型。返回的List
是固定大小的