List的toArray()方法和toArray(T[] a)方法
1.toArray()方法
会返回List中所有元素构成的数组,并且数组类型是Object[]。还要注意一点就是,返回的数组是新生成的一个数组,
也就是说,多次运行toArray()方法会获得不同的数组对象(可以理解存储的数组对象内存地址不一样),但是这些数组对象中内容一样的。
也就是说,toArray()返回的数组是安全的,你可以对它进行任意的修改,其原因就是List不会去维持一个对该返回的数组的引用。
public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);Object[] objects1 = list.toArray();Object[] objects2 = list.toArray();//比较二个新数组System.out.println("objects1 == objects2 : "+(objects1 == objects2));//对object1 对象的数组进行修改 不会影响到其他 引用的数组objects1[1]=4;//输出修改后的 数组System.out.println("show objects1: "+ Arrays.toString(objects1));//输出引用的数组System.out.println("show objects2: "+ Arrays.toString(objects2));//输出原来的数组System.out.println("show list: "+list);
}输出结果:objects1 == objects2 : false
show objects1: [1, 4]
show objects2: [1, 2]
show list: [1, 2]
2.T[] toArray(T[] a)
T[] toArray(T[] a) 参数传入一个数组,输出和参数同类型的数组,该参数相当于告诉方法要转为什么类型,所以一般传入个0长度的数组就可以了,即代码中的new String[]{}或new String[0]
3.总结:
- List接口的toArray()方法就是直接调用Arrays.copyOf(elementData,size),将list中的元素对象的引用装在一个新的生成数组中。
- List接口的toArray(T[] a)方法会返回指定类型(必须为list元素类型的父类或本身)的数组对象,如果a.length小于list元素个数就直接调用Arrays的copyOf()方法进行拷贝并且返回新数组对象,新数组中也是装的list元素对象的引用,否则先调用System.arraycopy()将list元素对象的引用装在a数组中,如果a数组还有剩余的空间,则在a[size]放置一个null,size就是list中元素的个数,这个null值可以使得toArray(T[] a)方法调用者可以判断null后面已经没有list元素了。
List的toArray()方法和toArray(T[] a)方法相关推荐
- [Java 基础] 深入理解List的toArray()方法和toArray(T[] a)方法
深入理解List的toArray()方法和toArray(T[] a)方法 这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArr ...
- 深入理解List的toArray()方法和toArray(T[] a)方法
深入理解List的toArray()方法和toArray(T[] a)方法 这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArr ...
- 详解List的toArray()方法和toArray(T[] a)方法
这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArray[T[] a]方法导出的是指定类型的数组. 下面是两个方法的申明及说明, ...
- Node.js的环境搭建方法和 npm 的使用方法
Node.js的环境搭建方法和 npm 的使用方法 Node.js 环境的搭建 Node.js 介绍 Node.js 下载 配置Node.js node.js 测试 npm(包管理器)使用方法 npm ...
- 联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法)
联想集群超算LICO初次使用踩坑说明(遇到的错误,一些使用方法和singularity新建容器方法) 说明 本文主要写一些我这几天初次使用LICO的过程中遇到的一点问题和解决的办法,还有一些模块的规范 ...
- JavaSE学习之路:Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法)
Idea小技巧一键生成标准JavaBean(一键生成构造方法和Setter和Getter方法) 方法1:快捷键 快捷键:alt+insert或alt+fn+insert 1.生成有参和无参构造函数 p ...
- CString的Trim()方法和TrimStrat()和TrimEnd()方法,TrimRight()和TrimLeft() 方法
一. CString的Trim()方法和TrimStrat()和TrimEnd()方法.这三个方法用于删除字符串头尾出现的某些字符. Trim()删除字符串头部及尾部出现的空格,删除的过程为从外到内, ...
- View的生命周期方法和Activity生命周期方法关系
View 是在Activity 中使用到的,所以在自定义View的时候,我们需要了解Activity 生命周期方法和View的生命周期方法调用先后顺序. 见如下图 (1) 在Activity onC ...
- jquery中的ready方法和window的onload方法的区别
jquery中的ready方法和window.onload的区别 区别 jquery的ready方法在网页中的DOM结构加载完成后执行.window.onload()必须等到网页全部加载完毕(包括图片 ...
最新文章
- bat curl 返回值_bat curl 发送http请求 监控网站
- 以服务的方式提供站点基础功能支持
- 8 -- 深入使用Spring -- 5...1 启用Spring缓存
- 《天涯明月刀》窦德斌:美术需要突破自我的局限
- 2019年总结【跨越今天,更不平凡】
- linux内核内存映射实验报告,动手实践-Linux内存映射基础(上)
- C++语言的技术性规则
- c语言将两个文件合成一个,keil中怎么把两个c程序怎么同时同时编译生成一个hex文件...
- html做成分页,静态html分页
- java根据word模板生成word文档_根据Word模板生成Word文件 (JAVA POI)
- 医疗健康大数据:应用实例与系统分析
- 关于软件测试的英语面试题,软件测试工程师英语面试题
- oracle按序号排序,Oracle排序以及序号的输出
- 关于虚拟机.vmdk与.ovf 磁盘装载问题
- Ubuntu下使用NTP同步对时
- 利用python进行数据分析-数据聚合与分组运算2
- 日语输入法键盘假名对应表
- pcre_exec()详解
- logcat命令使用方法和查看android系统日志缓冲区内容的方法
- 基于QT平台的手持媒体播放器项目实战视频教程下载