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<String> 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<Integer> objList=Arrays.asList(ob);  //数组里的每一个元素都是作为list中的一个元素  
        for(int a:objList){  
            System.out.println(a);  
        }  
          
        System.out.println("- - - - - - - - - - -");        
        
        
        int[] intArray = {1,2,3};
        List<int[]> 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<Integer> list = Arrays.asList(ArrayUtils.toObject( new int [] { 1 , 2 }));

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

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值