Java notes - 关于ArrayList.asList()方法 (2007-04-20 11:48:48)

在水木上看到的问题

    int[]intArray = new int[]{1, 2, 3, 4};
   List<Integer> list = newArrayList<Integer>();
   list.add(1);
   list.add(2);
   list.add(3);
   list.add(4);
    ListlistFromArray = Arrays.asList(intArray);
   System.out.println(listFromArray);
   System.out.println(list);


输出结果是
[[I@c17164]
[1, 2, 3, 4]
也就是说Arrays.asList()并没有返回一个{1,2,3,4}的List
原因在于,JDK5中asList接受变长参数表了,把intArray作为单独的参数传递给asList方法的时候,编译器会把它当作一个Object处理,于是返回了只有一个元素的List,而这个元素应该就是指向int[]的引用。
解决方法之一是把intArray声明为Integer[],即
Integer[] intArray = new Integer[]{new Integer(1), newInteger(2), new Integer(3), new Integer(4)};
List<Integer> listFromArray2 =Arrays.asList(intArray2);
System.out.println(listFromArray2);


这样就能看到预期结果了


转载自:http://blog.sina.com.cn/s/blog_3e123f03010008qb.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值