ArrayList.toArray(T[] a) 的说明
ArrayList.toArray(T[] a) 的说明
首先说明,下面是从jdk api 文档中看到的,这里只记录
下午无特别的事情,就想着研究下常用的java 源码,在这之前肯定要先看下jdk api 文档,心里有对这些实现的认识,看到了ArrayList ,其中的一个方法 toArray(T[]a), 这个方法是将一个链表转换成数组,在知道这个方法之前,一直自己用循环的方法转换成数组。
在知道这个方法之后,
用的第一版
String[] desc = new String[]{};
list.toArray(desc);
output(desc);
显然,经过测试这样并不能完成任务,desc 是空的,就有了下面的版本
String[] desc = new String[]{};
desc = list.toArray(desc);
output(desc);
这样也可以完成任务,当时总觉着有些问题,也没多想,反正只要完成想要的结果就可以了。
直到今天,看到文档
原来如果desc 不足以容纳list 时,会产生一个新的数组,之前的desc 不变,所以第一版中desc 初始化为空的数组,肯定不能容纳任何元素,故产生新的数据返回,output 时还是之前的空。
这也是第二版可以将返回的数组重新赋值给desc ,output 时也就能获得正确的结果;
如果写到这就完了,那岂不是不当于没写
今天看文档才知道的,必须要有用,
思来想去,只要desc 可以容纳toArray 之后的元素不就可以了,于是有了下面的版本:
String[] desc = new String[list.size()];
list.toArray(desc);
output(desc);
这下看着舒服多了,看代码就知道要实现什么目的,还是要多看文档,官方文档是最好的资料,加油,没事就来折腾文档与源码
ensureCapacity(int minCapacity)
这个方法保证会产生最少 minCapacity 个空间,但是不保证就是这么多,
如果现有容量已经大于minCapacity, 则不做处理
否则方法首先做的是:将现在有的容量扩展1.5 倍,之后再将新的容量与minCapacity 比较,取较大值
get/set 方法
- get 先验证下标值,再取值
- set 方法会返回被覆盖的元素值,也就是说添加替换新元素时,
ArrayList.toArray(T[] a) 的说明相关推荐
- [转载] Java ArrayList toArray(T[] a) 解惑
参考链接: Java中的Array vs ArrayList 先看一个小的代码片段 ArrayList<Integer> arrayList = new ArrayList<> ...
- ArrayList.toArray()
ArrayList.toArray()时,出现java.lang.ClassCastException的错误. ArrayList类扩展AbstractList并执行List接口.ArrayList支 ...
- ArrayList.toArray()的用法
当使用ArrayList时,有时想获得一个实际的数组,这个数组包含了列表的内容.可以通过调用方法toArray()来实现.eg:import java.util.ArrayList;public cl ...
- 深入理解ArrayList中 toArray(),toArray(T[])方法
在List类的具体实现类 ArrayList类中,有一个toArray()方法,该方法的作用是将ArrayList类型的对象转换为数组. 该类型有两个方法:1.toArray() 和 2. toAr ...
- 【ArrayList:键盘录入多个数据,以 0 结束,并在控制台输出最大值】
package com.companyname.common.test;import java.util.ArrayList; import java.util.Arrays; import java ...
- java ArrayList转数组
前言 jdk1.8 toArray()转数组 import java.util.ArrayList;public class TestMain {public static void main(Str ...
- List转数组toArray方法
一.List.toArray方法 List提供了一个将List转为数组的一个非常方便的方法toArray.toArray有两个重载的方法: Object[] toArray() ...
- arraylist能否接收强转类型_ArrayList 源码解析
点击上方"IT牧场",选择"设为星标" 技术干货每日送达! 前言 JDK源码解析系列文章,都是基于JDK8分析的,虽然JDK14已经出来,但是JDK8我还不会, ...
- java中ArrayList用法详解,基本用法(含增删改查)
1.什么是ArrayList ArrayList就是 动态数组,它提供了 ①动态的增加和减少元素 ②实现了ICollection和IList接口 ③灵活的设置数组的大小 ArrayList是一个其 ...
最新文章
- 本机无法访问虚拟机上的nignx
- python读取dat数据anaconda_基于python的大数据分析-pandas数据读取(代码实战)
- 如何在html中添加选择列表,html – 如何在选择列表中添加图像
- mysql中0和空值_SQL中空值 和NULL的概念:
- linux 系统盘无法ls,linux – ls:阅读目录.:输入/输出错误
- 发货通知单不允许新增,只能关联生成
- HashTable 源码解析 jdk1.8
- php如何防止网站被攻击,防止网站被攻击的办法
- Zbrush学习笔记十——制作毛发、模型减面
- [转载][路由器] k2p支持ipv6相关设置
- linux xps文件,Master PDF:PDF和XPS文件编辑神器
- 真正靠谱免费的数据恢复软件哪个好用?
- 微信开发者工具 推送报hook declined
- 【BZOJ3162】独钓寒江雪(树哈希,动态规划)
- python爬取物流信息_手把手教你用Python爬取快递100查询你的物流信息
- 059.迪杰斯特拉(Dijkstra)算法的原理以及解决最短路径问题
- php 单笔转账到支付宝账户,支付宝公钥证书实现版本
- -bash:........ Permission denied
- 监督学习最常见的四种算法
- 按需视觉识别:愿景和初步方案