前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >toArray方法的使用简记「建议收藏」

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

作者头像
全栈程序员站长
发布于 2022-08-27 07:47:24
发布于 2022-08-27 07:47:24
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

报错代码大致这样的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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方法添加参数,区别看代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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[]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.cn/146363.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ArrayList源码解析,老哥,来一起复习一哈?
JDK源码解析系列文章,都是基于JDK8分析的,虽然JDK14已经出来,但是JDK8我还不会,我…
敖丙
2020/05/26
6440
ArrayList源码解析,老哥,来一起复习一哈?
一文涵盖Lambda,Stream,响应式编程,从此爱上高效率编程
本文结构为 先是一个例子,带你快速体验,之后再去深究里面的方法。以及一些底层原理是如何实现的。从如何用,到如何用好,如何用精。学习操作,学习思维。
用户10143704
2024/04/12
890
Android toArray
ArrayList提供了一个将List转为数组的一个非常方便的方法toArray。toArray有两个重载的方法:
全栈程序员站长
2022/08/28
2130
Java List集合转数组的两种重载方法
ArrayList提供了将List转为数组的简单方法toArray,他有两个重载的方法,
bisal
2021/09/06
2.3K0
Java输出数组的内容「建议收藏」
作者:chszs,转载需注明。 作者博客主页:http://blog.csdn.net/chszs
全栈程序员站长
2022/11/07
5150
一句话,讲清楚java泛型的本质(非类型擦除)
(3)方法二报错的地方是在 System.out.println(sort2(list).getClass());这行,而不是 returnlist.toArray((T[])newComparable[list.size()]);这行;
彤哥
2019/07/08
5230
你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪
SubClass 继承自BaseClass,由于SubClass数组中每一个元素都是SubClass对象,所以BaseClass[] baseArray = subArray;这种强制类型转换不会报错。这其实就是java对象的向上转型,子类数组转换成父类数组是允许的。但是由于数组中元素类型都是SubClass类型的,所以 baseArray[0] = new BaseClass();会报错java.lang.ArrayStoreException。这也就是说假如我们有1个Object[]数组,并不代表着我们可以将Object对象存进去,这取决于数组中元素实际的类型。
JavaEdge
2020/03/12
8240
ArrayList 其实也有双胞胎,但区别还是挺大的!
这句话的意思是Collection集合类型的toArray()方法虽然声明返回值类型是Object[],但是具体调用时还真不一定就返回Onject[]类型,也有可能是其他的类型,这还要取决于你c的实际类型,使用不当还会抛出异常。这样讲可能会很懵比,下面我将会详细讲解到底为什么,现在我们先来看看Collection中的toArray()声明,让你对这个方法先有个大概的印象。
芋道源码
2018/10/26
5190
【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)1. 新建一个MyList类2. 构造函数设计3. add方法实现4. remove方法实现
在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等。 然后,演示了ArrayList的几个基本方法。 ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档已经说得很清楚了。 作为一个容器,ArrayList有添加元素,删除元素,以及获取元素的方法。 本节我们先不看ArrayLis底层的源码,而是按照平常的思路来模拟一下ArrayList的具体实现。看看如果我们自己来写的话,会怎么实现ArrayList的功能? 1. 新建一个MyList类 好的,我们来模拟一下A
剽悍一小兔
2018/05/17
7990
【方向盘】JavaSE/EE基础面试题、基础知识记录---大杂烩
此博文旨在搜集一些JavaSE基础部分的经典面试题,希望能达到一针见血,通过面试题来达到让大家记忆深刻的目的。 持续连载中。。。
YourBatman
2022/05/11
6500
【方向盘】JavaSE/EE基础面试题、基础知识记录---大杂烩
toArray方法总结
Java标准库中Collection接口定义了toArray方法,如果传入参数为空,则返回Object[]数组,如果传入参数为T[],则返回参数为传入参数的运行时类型。以下是ArrayList的实现:
全栈程序员站长
2022/08/28
3570
toArray方法总结
50道Java集合经典面试题(收藏版)
Collection.sort是对list进行排序,Arrays.sort是对数组进行排序。
捡田螺的小男孩
2020/06/19
9060
50道Java集合经典面试题(收藏版)
Java 数组转型和范型
这样写代码个人觉得应该没什么问题,编译也没有问题。可是具体运行的时候报异常,如下:
阳光岛主
2019/02/19
5840
C#编程入门_ToArray和CopyTo的区别_22「建议收藏」
ToArray是将一个集合转化成一个数组,该数组是进行ToArray操作的一个产物 CopyTo(T[] array)是一个将集合中的数据复制到一个一个已经存在的数组中,只不过是对数组中的元素进行修改
全栈程序员站长
2022/08/28
6200
C#编程入门_ToArray和CopyTo的区别_22「建议收藏」
这可能是最细的ArrayList详解了!
# 手撕ArrayList源码 > 文章首发于GitHub开源项目: [Java超神之路](https://github.com/shaoxiongdu/java-notes) ## ArrayList 简介 ArrayList 是一个数组列表。它的主要底层实现是`Object`数组,但与 Java 中的数组相比,它的**容量能动态变化**,可看作是一个动态数组结构。特别注意的是,当我们装载的是基本类型的数据 int,long,boolean,short,byte… 的时候,我们只能存储他们对应的包装
程序员阿杜
2021/09/11
9430
Java之数组转集合&集合转数组[通俗易懂]
原因是:Set不能存放重复元素,所以若转换为Set集合可能出现丢失元素的情况。。。
全栈程序员站长
2022/09/07
1K0
java8函数式编程Stream流处理实例讲解
一个流Stream代表了多个元素的序列,支持不同的操作:计算、求和等。Stream为函数式编程而生。对Stream的修改不会改变其数据源,特点:
青山师
2023/05/05
3190
集合和数组的相互转换
很多时候API的方法只支持集合或数组,比如适配器类中的数据只支持集合,这时候我们就要把数组转换集合。
全栈程序员站长
2022/07/04
2750
数组转换成list集合_字符串转数组js
为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码:
全栈程序员站长
2022/09/29
4.2K0
数组转换成list集合_字符串转数组js
Java集合、数组与泛型中的几个陷阱,你掉进了几个?
下面我总结了集合、泛型、数组转集合等一些常见的陷进,认真看完,相信你绝对有所收获。
帅地
2019/03/11
9120
Java集合、数组与泛型中的几个陷阱,你掉进了几个?
推荐阅读
相关推荐
ArrayList源码解析,老哥,来一起复习一哈?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验