toArray方法的使用简记「建议收藏」

toArray方法的使用简记「建议收藏」最近在写代码的时候需要用到的List的toArray方法。可是程序报错了报错代码大致这样的publicvoidfind(){List<String>list=newArrayList<String>();list.add("have");list.add("no");list.add("problem"…

大家好,又见面了,我是你们的朋友全栈君。

最近在写代码的时候需要用到的List的toArray方法。可是程序报错了

报错代码大致这样的

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    String[] arr = (String[]) list.toArray();
    for(String str : arr){
        System.out.println(str);
    }
}

 

这里在执行toArray方法时报如下异常

 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

起初想,不是加了类型转换了嘛。怎么还……,后来查了一下,将toArray的用法大致整理如下

 

第一种用法:在toArray方法中添加参数 new String[0]

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    String[] arr = list.toArray(new String[0]);
    for(String str : arr){
        System.out.println(str);
    }
}

 打印如下结果

have
no
problem

 

第二种用法:仍然是toArray方法添加参数,区别看代码

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    String[] arr = new String[list.size()];
    list.toArray(arr);
    for(String str : arr){
        System.out.println(str);
    }
}

 

仍然打印正确结果,注意的是,这里数组arr的最小长度为list的大小,否则转化结束后,数组arr中全是空值。当然比list的大小还要大,是可以的

 

第三种方法:不加参数,但是接受toArray方法返回的值变量类型需为Object[]

public void find(){
    List<String> list = new ArrayList<String>();
    list.add("have");
    list.add("no");
    list.add("problem");
    Object[] arr = list.toArray();
    for(Object str : arr){
        System.out.println(str);
    }
}

 

这样也可以打印正确结果

 

后来发现在数组变量前添加类型转化似乎是行不通的,基本数据类型之间这样转化编译时就报错了

 

是否还有其他用法有待后面的学习,先大致记录如上

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146363.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • javaweb-青橙项目-2-77

    javaweb-青橙项目-2-77

    2021年5月18日
    110
  • er图和uml图_数据库表结构er图

    er图和uml图_数据库表结构er图ER图:实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型构成E-R图的基本要素是实体、属性和联系,其表示方法为:实体型:用矩形表示,矩形框内写明实体名;属性:用椭圆形或圆角矩形表示,并用无向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加…

    2022年9月17日
    2
  • html简单登录页面代码

    html简单登录页面代码图片必须是在Imges下的否则显示不出来(复制代码的话把图片换成你的图片就好了)代码如下&lt;html&gt;&lt;head&gt;&lt;title&gt;tes

    2022年6月13日
    62
  • android 自己定义通知栏遇到的问题「建议收藏」

    android 自己定义通知栏遇到的问题

    2022年1月21日
    44
  • expect用法介绍

    expect用法介绍一、概念Expect是一个用来实现自动交互功能的软件套件。执行shell脚本,需要从终端得到输入时(如sshroot@192.168.1.2),Expect可以根据提示,模拟标准输入来实现交互脚本执行,使其以非交互的方式执行可以把shell和expect理解为两种不同的脚本语言,expect有独自的语法、变量二、ssh远程主机的方式2.1.简单方式,直接使用expect命令#!/bin/bash#登陆远程主机并查看主机名IP=”192.168.1.2″USERNAME=”root”P

    2025年8月23日
    0
  • Linux Ubuntu 下安装与卸载 JDK,亲测有效~[通俗易懂]

    Linux Ubuntu 下安装与卸载 JDK,亲测有效~[通俗易懂]习惯了在Windows系统上搭建JDK环境,也来试试在Linux上搭建JDK环境,经过最近两天的研究,将自己的心得分享给大家。由于本人水平有限,错误在所难免,还请各路豪杰不吝赐教~  使用apt-get在线安装与卸载,解压.tar.gz包手动安装与卸载

    2022年6月25日
    25

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号