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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 自然常数e的由来(简单通俗易于理解自然常数e)「建议收藏」

    自然常数e的由来(简单通俗易于理解自然常数e)「建议收藏」自然常数e的由来 (该文章用于自学和分享) 开篇先讲两个例子苏格拉底的麦穗柏拉图问苏格拉底,什么是爱情。苏格拉底说,这样吧,你去麦田里,不要回头,一直往前走,把你遇到的、最大的那棵麦穗摘下来、拿给我。后面的事,大家都知道了:柏拉图瞻前顾后,总觉得后面还有更好的,结果两手空空、一棵麦穗也没有得到。 除此之外,梅里尔·弗勒德(MerrillFlood)【提出过博弈论中…

    2022年10月26日
  • PostMan使用教程。

    PostMan使用教程。原地址:https://blog.csdn.net/haibo0668/article/details/83828184 Postman教程——发送第一个请求 Postman教程——创建第一个集合 Postman教程——界面功能导航 Postman教程——设置 Pos…

    2022年5月7日
  • MFC 获取窗口句柄

    MFC 获取窗口句柄1、使用FindWindow函数获取窗口句柄示例:使用FindWindow函数获取窗口句柄,然后获得窗口大小和标题,并且移动窗口到指定位置。#include<Windows.h>#include<stdio.h>#include<string.h>#include<iostream.h>intmain(intargc,char*argv[]){ //根据窗口名获取QQ游戏登录窗口句柄 HWNDhq=FindWind

    2022年7月21日
  • 十进制小数转二进制小数方法

    十进制小数转二进制小数方法十进制小数转二进制小数方法转自:http://www.cnblogs.com/upzone/articles/1389365.html十进制小数→→→→→二进制小数 方法:“乘2取整”对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.如此不断重复,直到小数部分为0或达到精度要求为止

    2022年9月24日
  • 如何查找网上的资源

    如何查找网上的资源一:电驴近期添加了版权                                                http://www.verycd.com/绕过验证的方法是 在verycd网址的”verycd.”与”com”之间,加上“gdajie.”,回车ed2k:

    2022年7月15日
  • 编译器实践三 之 针对算术表达式的语法分析器

    编译器实践三 之 针对算术表达式的语法分析器

    2022年1月26日

发表回复

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

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