1. ArrayList和数组之间的一些转换

ArrayLlist底层就是用数组实现的,并且提供了两个方法给我们来将集合转换成数组

1. public Object[] toArray() 这个数组中存储的是object对象
2. public <T> T[] toArray(T[] a) 这个数组中存储的是指定的T类型的对象
说说使用这两个方法可能会出现的问题
使用第一个方法经常会出现类型转换的问题
代码:
ArrayList<String> list = new ArrayList<String>();
String[] whereArgs = (String[]) list.toArray();
就会抛出类转换异常。这样转换时不对的,这里涉及到了泛型的强转问题。

这里我们要简单的说明下。在不带参数的时候,函数是自己去new一个Object数组,长度就是list的长度。然后,对这个数组赋值的时候,是把String赋值给Object,自然会报错。

我们运行:String[] lstArray = (String[]) lst.toArray();

会有如下异常:

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

atcom.study.ArrayAndList.main(ArrayAndList.java:38)

就是把Object对象试图转化成String对象的时候报错了。

toArray返回的时候,实际上是把传入的参数再次返回回来。如果是不带参数的调用,返回的就是自行new的数组。因为返回值需要统一类型,所以都是返回的Object[]。我们拿到后,进行强制转换就行了。

第二个方法:
代码:
ArrayList<String> list = new ArrayList<String>();

String[] whereArgs = new String[list.size()];

whereArgs = list.toArray(whereArgs);

这样写是ok的,但是如果创建数组对象时,没有指定数组的大小,就会报错

这个方法中的参数a相当于c语言中的传入性参数,将一个空数组传给集合,集合将其填满,再返回。

ArrayList和数组之间的一些转换相关推荐

  1. List集合与Array数组之间的互相转换

    1.数组转化成list集合(采用java中集合自带的asList()方法就可以完成转换了) String[] array = new String[] {"123", " ...

  2. ArrayList与数组

    ArrayList作用: 众所周知,一旦确定了数组的大小,改变它就不容易了.不过ArrayList类就可以解决动态更改数组大小的问题.ArrayList使用起来有点像数组,但是在添加和删除元素时,具有 ...

  3. Java中arraylist和数组的相互转换

    Java中ArrayList和数组之间的相互转换 ArrayList转为数组 数组转为ArrayList 一.ArrayList转换数组 public static void arrayListToA ...

  4. java arraylist与数组转换_java中String,数组,ArrayList三者之间的转换

    免费资源网 - https://freexyz.cn/ ArrayList转为String和数组 造一个元素为Integer的ArrayList 为list_int 造一个元素为String 的 Ar ...

  5. List和数组之间互相转换

    List和数组之间互相转换 List转数组 Integer[] numberArr=new Integer[]{1,2,3} 方法一:使用Arrays.asList() 不支持添加.删除元素(如果不需 ...

  6. NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存

    NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...

  7. C# 16进制与字符串、字节数组之间的转换

    在串口通讯过程中,经常要用到 16进制与字符串.字节数组之间的转换 字符串转16进制字节数组  1         private static byte[] strToToHexByte(strin ...

  8. 数组和JSON之间的格式转换

    数组和JSON之间的格式转换 主要代码: const a = JSON.stringify(jsonStrings) //object转json const c = JSON.parse(a) //j ...

  9. keras自定义simm作为损失函数,并且实现Tensor和数组之间的转换

    ssim介绍 在比较两幅图像误差或者相似度时,常用的衡量方法有MAE和MSE, https://blog.csdn.net/u011875342/article/details/78036380 但是 ...

最新文章

  1. Resource entery xx is already defined
  2. Java 泛型 super extends 边界
  3. 深度解析mysql登录原理
  4. log4j按天生成且有按照文件大小分割_论文阅读TGM:轨迹生成
  5. Winform中实现对照片添加文字和图片水印(附代码下载)
  6. 头部ct能检查出什么_【安全用药】做CT检查时应注意什么?
  7. Flash AS3.0实例教程:构建简单的声音可视化程序(波型图)
  8. CheckBox复选框控件
  9. groupby java_Java流-在GroupBy之后获取内部元素
  10. 读书|《赤裸裸的统计学》:统计数字很容易说谎
  11. visio中图形任意位置添加连接点
  12. Python Crash Course读书笔记 - 第18章:GETTING STARTED WITH DJANGO
  13. R语言-来自Prosper的贷款数据探索
  14. 陀螺仪和加速度计MPU6050的单位换算方法
  15. 算法Day8|字符串专题二 剑指 Offer 58 - II. 左旋转字符串,28. 找出字符串中第一个匹配项的下标,459. 重复的子字符串
  16. numpy.ndarray中对于字符串的处理
  17. 与贸易有关的知识产权协议 (转)
  18. 【MATLAB】分时段分类汇总代码
  19. AndroidOTA升级流程
  20. matlab基础及应用教程,初学者宝典—Matlab基础及其应用教程 PDF 文字版[2M]

热门文章

  1. 详解:知乎如何使用机器学习,未来还有哪些想象空间
  2. Centos7 PXE服务器部署
  3. 这不是我想要的Serverless
  4. 用习惯了windows系统要怎样去认识linux系统(三)
  5. 对有些反编译不成功的apk,请更新最新的apktool.jar、 dex2jar试试
  6. websocket包解析
  7. C# DEV 树、Grid、下拉框等设定数据源对比
  8. TURBOMAIL邮件服务器功能—邮件归档
  9. gssapiauthentication
  10. ZenHub Epics创造了GitHub中敏捷Epics