A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨希 中级黑马   /  2014-4-21 10:31  /  1292 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  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. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

5 个回复

倒序浏览
本帖最后由 ⒈心只霸占沵 于 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,数组和集合长度相同,元素一一对应
复制代码

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
new String[as.size()]不就是定义了一个String类型的数组,而数组的长度是集合as的大小
回复 使用道具 举报
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中的元素存进去。

回复 使用道具 举报
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数组
回复 使用道具 举报
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是泛型。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马