ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:

1.list.toArray();

2.list.toArray(T[]  a);

对于第一个重载方法,是将list直接转为Object[] 数组;

第二种方法是将list转化为你所需要类型的数组,当然我们用的时候会转化为与list内容相同的类型。

不明真像的同学喜欢用第一个,是这样写:

1
2
3
4
5
6
7
ArrayList<String> list=new ArrayList<String>();
        for (int i = 0; i < 10; i++) {
            list.add(""+i);
        }
         
        String[] array= (String[]) list.toArray();
        

结果一运行,报错:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

原因一看就知道了,不能将Object[] 转化为String[].转化的话只能是取出每一个元素再转化,像这样:

1
2
3
4
5
Object[] arr = list.toArray();
        for (int i = 0; i < arr.length; i++) {
            String e = (String) arr[i];
            System.out.println(e);
        }

所以第一个重构方法就不是那么好使了。

实际上,将list世界转化为array的时候,第二种重构方法更方便,用法如下:

1
2
String[] array =new String[list.size()];
list.toArray(array);

特别注意:

数组的定义不能用基本类型,必须要用包装类型,如int就报错。
举例:
int[] i = new int[set.size()];  //报错
Integer[] i =new Integer[set.size()];  //正确
i.toArray(array);

另附,两个重构方法的源码:

1.
public Object[] toArray(); {
Object[] result = new Object[size];
System.arraycopy(elementData, 0, result, 0, size);;
return result;
}

2.

public Object[] toArray(Object a[]); {
if (a.length < size);
a = (Object[]);java.lang.reflect.Array.newInstance(
a.getClass();.getComponentType();, size);;
System.arraycopy(elementData, 0, a, 0, size);;

if (a.length > size);
a[size] = null;

return a;
}

toArray()方法使用说明相关推荐

  1. list子类使用toarray方法实现集合向数组转换,下列哪些说法是正确的

    单选 list子类使用toarray方法实现集合向数组转换,下列哪些说法是正确的:答案在文末 A. Vector无法使用toArray转换成数组. B. 优先推荐:调用集合类的方法toArray(T[ ...

  2. java中List的toArray方法

    把List转换成某种类型的数组,就拿String类型来做例子吧,有以下两种方式: //方法1,使用不带参数的toArray方法 String[] arr1=new String[list.size() ...

  3. 关于Arrays类中toArray方法的总结

    学了差不多两年的Java,数组类Arrays应该是我最常用到的类之一了,在整个学习的过程中,会更常用到一个方法,那就是toArray方法,因为将Collections类型的集合转化为数组后,将会更容易 ...

  4. List转数组toArray方法

    一.List.toArray方法 List提供了一个将List转为数组的一个非常方便的方法toArray.toArray有两个重载的方法:  Object[] toArray()            ...

  5. 有关ArrayList的toArray()方法的一些探究

    ArrayList的创建与toArray()方法 先上两段代码,大家自己感受下 List<String> list1 = Arrays.asList("abc");// ...

  6. PHP中的方形按钮怎么敲,php 魔术方法使用说明

    php 魔术方法使用说明 2021-01-23 20:13:0612 PHP5.0后,php面向对象提成更多方法,使得php更加的强大!! 一些在PHP叫魔术方法的函数,在这里介绍一下:其实在一般的应 ...

  7. c# Dictionary 中Keys.ToArray方法的细节测试

    /// <summary>/// dic.Keys.ToArray<>方法生成数组的顺序和dic中的顺序相同/// </summary>public static ...

  8. turtle.write方法使用说明

    turtle.write方法使用说明 关于turtle可参见 Python的turtle模块https://blog.csdn.net/cnds123/article/details/10825286 ...

  9. List的toArray方法强制转换

    List的toArray方法强制转换 List容器类中有一个toArray()的方法,该方法是用来把List转化为数组的. 这个方法有一个特点就是转化出来的数组是复制了原数据的一个副本而不只是原数据的 ...

最新文章

  1. jwt怎么获取当前登录用户_spring oauth2如何获取当前登录用户信息
  2. (Eclipse)(STM32) STM32在Eclipse編程
  3. 微信小程序开发(1)
  4. php.ini 只读,disabled by the php.ini setting phar.readonly
  5. [sqlite] db-journal文件产生原因及说明
  6. Octotree:一款超实用的GitHub可视化代码树插件
  7. windows server 2008下载及序列号
  8. STM32F4 RTC详解
  9. 一篇全面的CSS布局学习指南 [译]
  10. nyoj71 独木舟上的旅行
  11. 年底谷歌扎堆升职,L3到L6升一级多$10w
  12. Android实训-家庭财务管理系统
  13. REVIT建模如何 一键生成局部三维视图
  14. 【SAP Abap】记录一次增强开发之销售交货开票VF04增强
  15. 朗读者李晓云清华大学计算机,世界杰出女科学家奖得主张弥曼现身《朗读者》...
  16. kl变换简单的解释入门_2010年20个最佳入门指南解释者主题
  17. Qt Creator 配置中文输入法
  18. 数字经济浪潮澎湃,怎样赢得下一个十年?
  19. Centos7.9、Ubuntu操作系统图文安装
  20. qwq。。胡诌qwq

热门文章

  1. OpenCV尺寸调整函数resize
  2. Android Camera的使用(一) 读书笔记
  3. java中的序列化和反序列化
  4. 《个体软件过程》—第1章1.1节什么是软件工程
  5. zabbix监控防火墙和交换机
  6. 免费的HTML5连载来了《HTML5网页开发实例具体解释》连载(四)HTML5中的FileSystem接口...
  7. android在Service中弹出Dialog对话框,即全局性对话框
  8. comboBox.DataSource绑定
  9. CH2-1 类型 操作 表达式
  10. 政府门户网站建设解决方案