我一直在使用番石榴的收集实用程序来创建列表:
List<Integer> foo = Lists.newArrayList(1, 2, 3);
最近我找到了原语实用程序,它允许这样做:
List<Integer> bar = Ints.asList(1, 2, 3);
从文档中看,foo
和bar
都是可变的:
foo.set(0, 100);
bar.set(0, 100);
那么对于像int这样的基元类型,两者之间有什么区别(如果有的话)呢?
基元不适用于泛型。这
List<Integer> foo = Lists.newArrayList(1, 2, 3);
将产生将每个int
值装箱并将整个东西包装在传递给newArrayList
的Integer[]
中的成本。返回的List
不是固定大小。
这
List<Integer> bar = Ints.asList(1, 2, 3);
只会产生将三个参数包装在int[]
中的成本,因为这是参数类型。返回的List
是固定大小