Java 将Arrays.asList与int数组一起使用
使用Java 将Arrays.asList与int数组一起使用,java,arrays,list,collections,Java,Arrays,List,Collections,使用java.util.Arrays.asList,为什么它会为int(基本类型)和String数组显示不同的列表大小 a) 使用intarray,每当我执行以下程序时,列表大小=1 public static void main(String[] args) { int ar[]=new int[]{1,2,3,4,5}; List list=Arrays.asList(ar); System.out.println(list.size());
java.util.Arrays.asList
,为什么它会为int
(基本类型)和String
数组显示不同的列表大小
a) 使用int
array,每当我执行以下程序时,列表大小=1
public static void main(String[] args) {
int ar[]=new int[]{1,2,3,4,5};
List list=Arrays.asList(ar);
System.out.println(list.size());
}
b) 但是如果我从int
数组类型更改为String
数组(比如String ar[]=newstring[]{“abc”、“klm”、“xyz”、“pqr”};
),那么我得到的列表大小是4,我认为是正确的
PS:使用
Integer
(包装类)数组,结果很好,但我不确定为什么在primitiveint
数组中,列表大小是1。请解释。列表
无法保存原语值,因为java泛型(请参阅)。因此,当您调用Arrays.asList(ar)
时,数组将创建一个只包含一项的列表-int数组ar
编辑:
数组的结果。asList(ar)
将是一个列表
,非列表
,它将包含一个项目,即int
s的数组:
[ [1,2,3,4,5] ]
您不能从列表本身访问原语int
s。您必须这样访问它:
list.get(0).get(0) // returns 1
list.get(0).get(1) // returns 2
...
我认为这不是您想要的。
列表是泛型类型,基本类型不是类型参数的有效替代品
因此,在第一个示例中,当使用int[]
调用Arrays.asList()
时,类型参数的值将是int[]
,而不是int
,它将返回int数组的列表。它只有一个元素,即数组本身
第二种情况是一个列表
,正确地保存您传递给它的4个字符串。可能您的编译器甚至在列表
上给了您一个原始类型警告。许多IDE将提供一些有用的修复,其中一个将List
更改为List
。后者指向“daerin”和“icza”的答案。因此,如果数组创建一个只包含一个项的列表-int数组ar
,那么如何使用list遍历和访问原始值?明白了!它应该像intab[]=(int[])list.get(0)代码>仔细观察list.get(0).get(0)
无法在此处直接访问,因为最后一个get()
是未定义的,除非您将整个语句键入其他集合(具有get
方法)