使用java.util.Arrays.asList
,为什么它显示int
(原始类型)和String
数组的不同列表大小?
a)使用int
数组,每当我执行以下程序时,List size = 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[] = new String[]{"abc","klm","xyz","pqr"};
),那么我的列表大小为4,我认为是正确的。
PS :使用Integer
(Wrapper Class)数组,结果为Fine,但我不确定为什么在原始int
数组中,列表大小为1。请解释一下。
答案 0 :(得分:5)
List
无法保存原始值(请参阅similar question)。因此,当您调用Arrays.asList(ar)
时,Arrays会创建一个只包含一个项目的列表 - int数组ar
。
编辑:
Arrays.asList(ar)
的结果将是List<int[]>
,不 List<int>
,它将包含一个int
s数组的项:
[ [1,2,3,4,5] ]
您无法从列表本身访问原始int
。你必须这样访问它:
list.get(0).get(0) // returns 1
list.get(0).get(1) // returns 2
...
我认为这不是你想要的。
答案 1 :(得分:1)
List
是泛型类型,原始类型不是type参数的有效替代。
因此,在您使用Arrays.asList()
致电int[]
时的第一个示例中,type参数的值将为int[]
而不是int
,并且它将返回int数组列表。它只有1个元素,即数组本身。
第二种情况是List<String>
,正确地保存你传递给它的4个字符串。