List<String> c = new ArrayList<String>();
c.add("aa");
c.add("bb");
String[] strs = c.toArray(new String[c.size()]);
String[] sss = c.toArray(new String[0]);
for(String s:strs){
System.out.println(s);
}toArray(参数),这个参数为什么new String[0]会产生c同样大的数组呢?比如c里面有10个元素,那么strs和sss是一样的,为什么会这样呢
c.add("aa");
c.add("bb");
String[] strs = c.toArray(new String[c.size()]);
String[] sss = c.toArray(new String[0]);
for(String s:strs){
System.out.println(s);
}toArray(参数),这个参数为什么new String[0]会产生c同样大的数组呢?比如c里面有10个元素,那么strs和sss是一样的,为什么会这样呢
如果t的大小>a.length,则以t的大小为准;
如果t的size<a.length;则以a.length为准,先copy t到数组,(a.length-t.size)后的每一项为null;
如果t.size==a.length ,则copy t到数组。
import java.util.Arrays;
import java.util.List;public class TestToArray {
public static void main(String[] args) {
List<String> c = new ArrayList<String>();
c.add("aa");
c.add("bb");
for(int i= 0; i<10; i++) {
String[] strs = c.toArray(new String[i]);
System.out.println(Arrays.toString(strs));
}
}
}
/*
[aa, bb]
[aa, bb]
[aa, bb]
[aa, bb, null]
[aa, bb, null, null]
[aa, bb, null, null, null]
[aa, bb, null, null, null, null]
[aa, bb, null, null, null, null, null]
[aa, bb, null, null, null, null, null, null]
[aa, bb, null, null, null, null, null, null, null]
*//**
* Returns an array containing all of the elements in this list in
* proper sequence (from first to last element); the runtime type of
* the returned array is that of the specified array. If the list fits
* in the specified array, it is returned therein. Otherwise, a new
* array is allocated with the runtime type of the specified array and
* the size of this list.
*
* <p>If the list fits in the specified array with room to spare (i.e.,
* the array has more elements than the list), the element in the array
* immediately following the end of the list is set to <tt>null</tt>.
* (This is useful in determining the length of the list <i>only</i> if
* the caller knows that the list does not contain any null elements.)
*
* <p>Like the {@link #toArray()} method, this method acts as bridge between
* array-based and collection-based APIs. Further, this method allows
* precise control over the runtime type of the output array, and may,
* under certain circumstances, be used to save allocation costs.
*
* <p>Suppose <tt>x</tt> is a list known to contain only strings.
* The following code can be used to dump the list into a newly
* allocated array of <tt>String</tt>:
*
* <pre>
* String[] y = x.toArray(new String[0]);</pre>
*
* Note that <tt>toArray(new Object[0])</tt> is identical in function to
* <tt>toArray()</tt>.
*
* @param a the array into which the elements of this list are to
* be stored, if it is big enough; otherwise, a new array of the
* same runtime type is allocated for this purpose.
* @return an array containing the elements of this list
* @throws ArrayStoreException if the runtime type of the specified array
* is not a supertype of the runtime type of every element in
* this list
* @throws NullPointerException if the specified array is null
*/
* proper sequence (from first to last element); the runtime type of
* the returned array is that of the specified array. If the list fits
* in the specified array, it is returned therein. Otherwise, a new
* array is allocated with the runtime type of the specified array and
* the size of this list.
*
* <p>If the list fits in the specified array with room to spare (i.e.,
* the array has more elements than the list), the element in the array
* immediately following the end of the list is set to <tt>null</tt>.
* (This is useful in determining the length of the list <i>only</i> if
* the caller knows that the list does not contain any null elements.)
*
我也想这么回答的,API写的很清楚了!!!