java容器之Array转换List

来源:互联网 发布:我国网络舆论积极作用 编辑:程序博客网 时间:2024/05/17 03:15

Array都不陌生,List 是一个接口。它代表着有序的队列。ArrayList, LinkedList, Vector, Stack是List的4个实现类。这些类从名字也能猜出基本的用法,不多说。

Java里把普通数组转化为List有个专门的静态方法,asList,使用示例如下:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public class ArraysToList   
  2. {  
  3.     /** 
  4.      * @param args 
  5.      */  
  6.     public static void main(String[] args)   
  7.     {  
  8.         // TODO Auto-generated method stub  
  9.         System.out.println(Arrays.asList(new String[] {"a","b"}));  
  10.         System.out.println(Arrays.asList(new Integer[] {1,2}));  
  11.         System.out.println(Arrays.asList(new int[] {1,2}));  
  12.         System.out.println(Arrays.asList(new String[] {"a","b"},"c"));  
  13.     }  
  14.   
  15. }  


 

输出结果:

[html] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. [a, b]  
  2. [1, 2]  
  3. [[I@35ce36]  
  4. [[Ljava.lang.String;@757aef, c]  


 

第1,2两行的结果都如预期一般,但是3,4两行就不对了。先说第3个,输出的是个地址列表,问题出在哪?

要分析原因,先看看asList函数的声明,


 

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public static <T> List<T> asList(T... a)  


 

它接受的是一个变长参数,T表示类型要是Object类型,前两行代码,asList会认为分别传入两个object类型,然后它会处理好。但是int本身不是Object类型,那为什么asList没有编译错误呢? 原因是int[] 是Object类型,所以对于第3行代码,asList把(new int[] {1,2})作为一个Object参数了。就相当于

 

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. Arrays.asList(new Object[] {new int[] {1,2}})  
  2.   
  3.    

 

同理可以知道第4行结果产生的原因了,至于解决方法,像上面这种情况,可以考虑把int转化为Integer后再用asList。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机摔了一下触屏失灵怎么办 小米手机摔了一下触屏失灵怎么办 苹果6sp触摸ic坏了怎么办 苹果4s屏幕摔裂了怎么办 新换的手机内屏颜色太亮怎么办 苹果手机摔了一下屏幕失灵怎么办 苹果手机6s屏幕坏了怎么办 苹果6s屏幕摔坏了怎么办 苹果手机屏幕进油了屏幕变暗怎么办 苹果手机不小心屏幕进油了怎么办 苹果6充电插口螺丝口坏了怎么办 苹果5s手机安装屏幕翘边怎么办 苹果手机摔了一下触摸屏失灵怎么办 苹果手机摔了下触摸屏失灵怎么办 苹果6老是屏幕失灵或者闪屏怎么办 华为荣耀8手触摸屏乱跳失灵怎么办 苹果5s屏幕有半边竖纹怎么办 苹果5s电源键坏了怎么办 苹果6s手机触屏失灵怎么办 不能取电池的手机触屏不灵怎么办? 7p主板触摸ic坏了怎么办 小米六手机摔了一下屏幕失灵怎么办 魅蓝5s触屏失灵怎么办 苹果手机键盘字母顺序乱了怎么办 红米手机进水后屏幕失灵怎么办 苹果7plus主屏按键坏了怎么办 苹果六手机上的红色变成粉色怎么办 苹果手机出现闪屏和手感不灵怎么办 荣耀6plus后开不了机怎么办 苹果手机touch id密码忘了怎么办 苹果7摔出了一个裂缝怎么办 屏幕摔坏了下键盘失灵怎么办 苹果4s手机按健失灵怎么办 金立手机摔了一下黑屏了怎么办 苹果5s屏幕不亮了怎么办 苹果6s手机开不了机怎么办 苹果手机充电的地方坏了怎么办 手机丢了只有imei码该怎么办 在保修期的苹果被偷了怎么办 苹果手机在保修期之外坏了怎么办 把苹果售后给的备用机摔了怎么办