Java数组asList()使用方法总结

Java中Arrays的asList()方法 可以将 数组转为List ,但是该方法很容易让人犯错或产生误解。

请看下面例子:

public class demo4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        
        String s[]={"aa","bb","cc"};  
        List sList=Arrays.asList(s);  
        for(String str:sList){//能遍历出各个元素  
            System.out.println(str);  
        }  
        System.out.println(sList.size());//为3  
          
        System.out.println("- - - - - - - - - - -");  
          
        int i[]={11,22,33};  
        List intList=Arrays.asList(i);  //intList中就有一个Integer数组类型的对象,整个数组作为一个元素存进去的  
        for(Object o:intList){//就一个元素  
            System.out.println(o.toString());  
        }  
        System.out.println(intList.size());

          
        System.out.println("- - - - - - - - - - -");  
          
        Integer ob[]={11,22,33};  
        List objList=Arrays.asList(ob);  //数组里的每一个元素都是作为list中的一个元素  
        for(int a:objList){  
            System.out.println(a);  
        }  
          
        System.out.println("- - - - - - - - - - -");        
        
        
        int[] intArray = {1,2,3};
        List myList = Arrays.asList(intArray);
        System.out.println(myList.size());
        System.out.println(myList.get(0).length);
        
        System.out.println("- - - - - - - - - - -"); 
	}
执行结果:
aa
bb
cc
3
- - - - - - - - - - -
[I@41aff40f
1
- - - - - - - - - - -
11
22
33
- - - - - - - - - - -
1
3
- - - - - - - - - - -

如果将数组作为参数进行传递,基本类型数组将被视为一个对象而不会被解析成数组,因此传递基本类型数组时强烈建议转为其封装类对象的数组  int ->Integer ,long->Long …………。即数组类型必须是 引用类型的。

原因:在Arrays.asList方法中T是参数类型,因此它必须为一个Object 类型,不可以是基本类型。

1.如果你要将一个数组转换为list时仅仅是要将其转换为一个string,那么最好使用Arrays.toString代替上面的方法,即使对于基本类型的数组该方法也不会出现任何问题。
2.如果你打算将一个基本类型的数组转换为所对应的封装类型的list,使用Apache Commons Lang,类似下面这样使用ArrayUtils.toObject:

List list = Arrays.asList(ArrayUtils.toObject( new int [] { 1 , 2 }));

请注意:一般情况下推荐使用原始数据类型数组而不是装箱后的原始数据类型列表。
3.如果你打算将一个引用类型的数组转换为list,可以直接使用Arrays.asList:
List list = Arrays.asList(newString[] {"a","b"});

你可能感兴趣的:(Java入门基础)