List类存放数组类型的问题!
import java.util.*;public class Test
{
public static void main(String[] args)
{
String [] a={"5","2","3","4"};
System.out.println("The length of String[] a is "+a.length);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
List<String> lst=Arrays.asList(a);
for(int i=0;i<lst.size();i++){
System.out.println(lst.get(i));
}
}
}
上述程序编译和运行都没有问题,功能是将string数组中各个string作为单个项放入List并访问;
但是,如果我想把string数组作为一个整体,作为一项放入List,即List每项都是string数组,而不是单个string,那么我是不是应该把程序改为:
......
List<String []> lst=Arrays.asList(a);
......
这时编译报错,说是找到的a是个string,但泛型要求是string [],奇怪!我的a明明定义为一个string[],怎么会是个string?
更奇怪的是,如果我定义int [] a={1,2,3,4},List创建时写:List<int []> lst=Arrays.asList(a)就完全没问题。程序如下:
import java.util.*;
public class Test
{
public static void main(String[] args)
{
int [] a={1,2,3,4,5};
System.out.println("The length of String[] a is "+a.length);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
List<int []> lst=Arrays.asList(a);
for(int i=0;i<lst.get(0).length;i++){
System.out.println(lst.get(0)[i]);
}
}
}
这是怎么回事?
[此贴子已经被作者于2007-10-11 13:03:17编辑过]
----------------解决方案--------------------------------------------------------
你这样做是没有意义的,整个东西放到数组里面list.add()不就可以了,干嘛还要Arrays.asList,
asList是要剥掉一层数组的,除非你是二维数组,
----------------解决方案--------------------------------------------------------
回复:(千里冰封)你这样做是没有意义的,整个东西放...
呵呵,版主提醒的是。不过我只是在学习List的用法,而不是要实现个什么功能,所以,请您解答下我的问题吧,就是剥掉一层,为什么int []的可以,string []的不可以?谢谢啦
[此贴子已经被作者于2007-10-11 13:30:54编辑过]
----------------解决方案--------------------------------------------------------
麻烦各位达人帮忙,急!
[此贴子已经被作者于2007-10-11 13:34:57编辑过]
----------------解决方案--------------------------------------------------------
因为int是一个基本的数据类型,所以当你把a传进去的时候,它会认为你是传一个对象进去,而不会认为你传了一个数组进去
,所以它会把你的整个数组当做一个对象传进去,所以你传int[]的时候会通过,而这其实并不是我们大多数人想要的
不信,你可以把int[]改为Integer[]试一下,一样过不了,asList这个方法的目的就是把你的参数分开,构成一个List。如果你硬要把数组装进去,你可以用二维数组,那么剥掉一层以后,就剩下一维的数组了
Integer[][] ii=new Integer[5][5];
List<Integer[]> list=Arrays.asList(ii);
不过,我不是相信,这并不是设计Arrays.asList这个方法的人想希望看到的
----------------解决方案--------------------------------------------------------
更正,以上最后一句应该是:
不过,我还是相信,这并不是设计Arrays.asList这个方法的人想希望看到的
----------------解决方案--------------------------------------------------------
果然是灌水之王
----------------解决方案--------------------------------------------------------
我是在说正事
----------------解决方案--------------------------------------------------------
知道啦.
PS:以后俺也忘记"编辑"的操作啦.
----------------解决方案--------------------------------------------------------
回复:(千里冰封)因为int是一个基本的数据类型,所以...
解答很具体,我明白了,太感谢了!
----------------解决方案--------------------------------------------------------