在番石榴中,Lists.newArrayList()与原始类型的Ints.asList()之间有什么区别(如果有的话)

Jef*_*iao 1 java guava

我一直在使用guava的集合实用程序来创建一个列表:

List<Integer> foo = Lists.newArrayList(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

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

List<Integer> bar = Ints.asList(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

文件,无论是foobar是可变的:

foo.set(0, 100);
bar.set(0, 100);
Run Code Online (Sandbox Code Playgroud)

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

Sot*_*lis 6

基元不适用于泛型.这个

List<Integer> foo = Lists.newArrayList(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

会产生装箱每个int价值的成本,并将整个东西包装Integer[]成传递给newArrayList.在List返回的不是固定的大小.

这个

List<Integer> bar = Ints.asList(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

只会产生将三个参数包装int[]成参数类型的成本.在List返回的固定大小