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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 陈妙俊 于 2014-4-20 08:34 编辑

import java.util.*;

public class CollectionsToArray {
        public static void main(String[] args) {
                List<String> list = new ArrayList<String>();
                list.add("abc");
                list.add("aaa");
                list.add("bbbb");
                list.add("adffer");
                list.add("zzz");
                list.add("kkk");
                System.out.println(Arrays.toString((String[])list.toArray()));
        }
}

6 个回复

倒序浏览
本帖最后由 左拉 于 2014-4-19 12:04 编辑

List本身具有转换成数组功能:
1:toArray()转换成Object数组
2:toArray(T[]) 转换成泛型数组:

看看以下代码:

  1. import java.util.*;

  2. public class CollectionsToArray {
  3.         public static void main(String[] args) {
  4.                 List<String> list = new ArrayList<String>();
  5.                 list.add("abc");
  6.                 list.add("aaa");
  7.                 list.add("bbbb");
  8.                 list.add("adffer");
  9.                 list.add("zzz");
  10.                 list.add("kkk");
  11.                //第一种方法:转换成Object数组,然后转换为字符串数组
  12.                Object[] obj=list.toArray();
  13.                for(int i=0;i<obj.length;i++)
  14.                {
  15.                     //转换成字符串
  16.                    String str=(String)obj[i];
  17.                    System.out.println(str);
  18.                 }

  19.                //第二种方法:直接转换成字符串数组:
  20.                 String[] strs=list.toArray(new String[]{});
  21.                 for(int i=0;i<strs.length;i++)
  22.                 {
  23.                    System.out.println(strs[i]);
  24.                 }
  25.         }
  26. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 左拉 于 2014-4-19 11:35 编辑

如果按照你那方法,应该是Arrays.toString(list.toArray(new String[]{}));
Arrays.toString((new String[]{})list.toArray());
这样不知道行不行,我没开发工具= =。
回复 使用道具 举报
List本身具有转换成数组功能:
1:toArray()转换成Object数组
2:toArray(T[]) 转换成泛型数组:
3:toString().toCharArray()转换成字符数组
前两个楼上的已经说过了,第三个的代码如下:

  1. import java.lang.reflect.Array;
  2. import java.util.*;

  3. public class CollectionsToArray {
  4.         public static void main(String[] args) {
  5.                 List<String> list = new ArrayList<String>();
  6.                 list.add("abc");
  7.                 list.add("aaa");
  8.                 list.add("bbbb");
  9.                 list.add("adffer");
  10.                 list.add("zzz");
  11.                 list.add("kkk");
  12.                char [] a = list.toString().toCharArray();
  13.                 System.out.println(a);
  14.                 for (char c : a) {
  15.                                         System.out.println(c);
  16.                                 }
  17.         }
  18. }
复制代码


回复 使用道具 举报
如楼上所说:List本身具有转换成数组功能,list.toArray()返回的结果是Object数组,
(String[])list.toArray()),这样做就是将Object数组强制转换为String[]数组,这是编译器不允许的。会报类型转换错误。
System.out.println(Arrays.toString(list.toArray()));直接就能输出。
回复 使用道具 举报
呆呆沙师妹 发表于 2014-4-19 14:30
如楼上所说:List本身具有转换成数组功能,list.toArray()返回的结果是Object数组,
(String[])list.toArra ...

这个靠谱:)
回复 使用道具 举报
左拉 中级黑马 2014-4-19 19:12:10
7#
本帖最后由 左拉 于 2014-4-19 19:59 编辑
天涯追梦 发表于 2014-4-19 14:08
List本身具有转换成数组功能:
1:toArray()转换成Object数组
2:toArray(T[]) 转换成泛型数组:


其实第三种方法只适合字符串对不对:),假设自定义一个student类

  1. import java.util.*;

  2. class Student{
  3.     private String name;
  4.     private int age;
  5.     public Student(String name,int age){
  6.          this.name=name;
  7.          this.age=age;
  8.      }
  9.      public String toString(){
  10.          return this.name+","+this.age;
  11.     }
  12. }

  13. public class CollectionsToArray {
  14.         public static void main(String[] args) {
  15.                 List<Student> list = new ArrayList<Student>();
  16.                 list.add(new Student("test-a",21));
  17.                 list.add(new Student("test-b",11));
  18.                 list.add(new Student("test-c",19);                                                
  19.               //第一种方法:转换成Object数组,然后转换为Student数组
  20.                Student[] stus=list.toArray();
  21.                for(int i=0;i<stus.length;i++)
  22.                {
  23.                     //转换成字符串
  24.                    String stu=(Student)stus[i];
  25.                    System.out.println(stu);
  26.                 }

  27.                //第二种方法:直接转换成Student数组:
  28.                 Student[] stus=list.toArray(new Student[]{});
  29.                 for(int i=0;i<stus.length;i++)
  30.                 {
  31.                    System.out.println(stus[i]);
  32.                 }
  33.         }
  34. }
复制代码
这样的情况就不能用toCharArray()方法读取list中的数据了,所以这个方法只能用于字符串数组。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马