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);
    }
}

 

这样也可以打印正确结果

 

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

 

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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