黑马程序员技术交流社区

标题: 关于集合变数组的方法 [打印本页]

作者: 杨希    时间: 2014-4-21 10:31
标题: 关于集合变数组的方法

  1. 大家帮我看一下下面的代码,谢谢

  2. import java.util.*;
  3. class Demo3
  4. {
  5.         public static void main(String args[])
  6.         {
  7.                
  8.                 ArrayList<String> as =new ArrayList<String>();
  9.                 as.add("23");
  10.                 as.add("sd");
  11.                 as.add("cv");
  12.                 String[] arr=as.toArray(new String[as.size()]); //这块new String[as.size()],这是啥意思啊,不太懂,能帮我详细讲解一下吗
  13.                 sop(Arrays.toString(arr));
  14.                
  15.         }
  16.         public static void sop(Object obj)
  17.         {
  18.                 System.out.println(obj);
  19.         }
  20. }
复制代码



作者: ⒈心只霸占沵    时间: 2014-4-21 10:38
本帖最后由 ⒈心只霸占沵 于 2014-4-21 10:39 编辑
  1.   String[] arr=as.toArray(new String[as.size()]); //这块new String[as.size()],这是啥意思啊,不太懂,能帮我详细讲解一下吗
复制代码

分开写就是
  1. String[] strs=new String[as.size()];//定义一个与集合相同长度(集合长度为as.size())的数组
  2. String[] arr=as.toArray(strs); //将集合转成arr,数组和集合长度相同,元素一一对应
复制代码


作者: 雪碧拌米饭    时间: 2014-4-21 10:41
new String[as.size()]不就是定义了一个String类型的数组,而数组的长度是集合as的大小
作者: kuroro自走核炮    时间: 2014-4-21 10:42
String[] arr=as.toArray(new String[as.size()])
new String[as.size()]创建一个ArrayList集合as长度的字符串数组
as.toArray()
按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果指定的数组能容纳列表,则将该列表返回此处。否则,将分配一个具有指定数组的运行时类型和此列表大小的新数组。
如果指定的数组能容纳队列,并有剩余的空间(即数组的元素比队列多),那么会将数组中紧接 collection 尾部的元素设置为 null。(仅 在调用者知道列表中不包含任何 null 元素时才能用此方法确定列表长度)。
就是把ArrayList集合中的元素存到这个数组了。
这个数组的名字就是:String[] arr
总结:这句的意思就是新建了一个名字叫arr的长度和ArrayList集合as一样的数组,然后将ArrayList集合as中的元素存进去。


作者: Teemo_Mann    时间: 2014-4-21 10:44
public <T> T[] toArray(T[] a)
按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。如果指定的数组能容纳列表,则将该列表返回此处。否则,将分配一个具有指定数组的运行时类型和此列表大小的新数组。

看这个方法说明,也是括号里的a是用于接纳arrayList里面的元素的
所以你代码里
   as.add("23");
   as.add("sd");
   as.add("cv");
add了三次,也就是说arrayList里面有三个元素,当然要一个长度为3的String数组来存储
new String[as.size()]其实也就是创建3个长度的String数组

作者: idream    时间: 2014-4-21 10:52
String[] arr=as.toArray(new String[as.size()]);
分析:as.size() 是集合as的元素的个数
         String[] array = new String[as.size];
        查看API有个方法<T>T[]  toArray(T[] a)
       就是用的这个方法,相当于:即:
       String[] arr = as.toArray(String[] array);
       这里的T是泛型。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2