在番石榴中,Lists.newArrayList() 和 Ints.asList() 对于基元类型有什么区别(如果有的话



我一直在使用番石榴的收集实用程序来创建列表:

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

最近我找到了原语实用程序,它允许这样做:

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

从文档中看,foobar都是可变的:

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

那么对于像int这样的基元类型,两者之间有什么区别(如果有的话)呢?

基元不适用于泛型。这

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

将产生将每个int值装箱并将整个东西包装在传递给newArrayListInteger[]中的成本。返回的List不是固定大小。

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

只会产生将三个参数包装在int[]中的成本,因为这是参数类型。返回的List是固定大小

最新更新