html tool

2017年10月31日星期二

转:java.util.Arraylist.toArray()


http://blog.csdn.net/Evan123mg/article/details/46331771


java.util.ArrayList.toArray(T[]) 方法返回一个包含所有在此列表中正确的序列中的元素(从第一个到最后一个元素)数组以下是关于ArrayList.toArray()要点:
1.返回数组的运行时类型是指定数组的。如果列表中指定的数组能容纳,则在其中返回。否则,一个新的数组分配具有指定数组的运行时类型和此列表的大小。
2.如果列表中指定的数组能容纳更加节省空间(即数组的元素比列表元素多),那么会将紧挨着collection尾部的元素设置为null。

声明:

以下是java.util.ArrayList.toArray()方法的声明
[java] view plain copy
  1. public  T[] toArray(T[] a)  

参数:

a -- 这是数组,列表中的元素将被存储,如果它是足够大的;否则同样的运行时类型的新数组分配用于这一目的。
[popexizhi: 这个位置很奇怪,测试时,对返回值和a 的位置单独赋值,其他位置没有调用,也可以正常返回,类似如下的调用方式:
调用测试一: List.toArray(a);
调用测试二: a = List.toArray(new Double[0] );
a都可以成为预期的double[],好奇怪啊,看下文的例子,是a= List.toArray(a);这个是什么原因,两个位置都要设置,这个方法到底是如何对两个位置处理的呢????
]

异常:

ArrayStoreException -- 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型。
NullPointerException -- 如果指定数组为null。

例子:

下面的示例演示java.util.Arraylist.toArray()方法的用法。
[java] view plain copy
  1. package com.yiibai;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. public class ArrayListDemo {  
  6.    public static void main(String[] args) {  
  7.         
  8.     // create an empty array list with an initial capacity  
  9.     ArrayList arrlist = new ArrayList();  
  10.   
  11.     // use add() method to add values in the list  
  12.     arrlist.add(10);  
  13.     arrlist.add(12);  
  14.     arrlist.add(31);  
  15.     arrlist.add(49);  
  16.       
  17.     System.out.println("Printing elements of array1");  
  18.   
  19.     // let us print all the elements available in list  
  20.     for (Integer number : arrlist) {  
  21.       System.out.println("Number = " + number);  
  22.     }    
  23.   
  24.     // toArray copies content into other array  
  25.     Integer list2[] = new Integer[arrlist.size()];  
  26.     list2 = arrlist.toArray(list2);
  
  •   
  •     System.out.println("Printing elements of array2");  
  •   
  •     // let us print all the elements available in list  
  •     for (Integer number : list2) {  
  •       System.out.println("Number = " + number);  
  •     }  
  •   }  
  • }   
  • 让我们来编译和运行上面的程序,这将产生以下结果:
    [java] view plain copy
    1. Printing elements of array1  
    2. Number = 10  
    3. Number = 12  
    4. Number = 31  
    5. Number = 49  
    6. Printing elements of array2  
    7. Number = 10  
    8. Number = 12  
    9. Number = 31  
    10. Number = 49  

    没有评论:

    发表评论