Warning: Call to 'toArray()' with pre-sized array argument 'new String[list.size()]'
2024-08-29 05:51:24
当使用如下代码将List转换为Array类型时:
List<String> list = new ArrayList<>();
String[] array = list.toArray(new String[list.size()]);
会出现提示
Call to 'toArray()' with pre-sized array argument 'new String[list.size()]'
Inspection info: There are two styles to convert a collection to an array: either using a pre-sized array (like c.toArray(new String[c.size()])) or using an empty array (like c.toArray(new String[0]).
转换集合为数组的时候,有两种方式:使用初始化大小的数组(这里指的是初始化大小的时候使用了集合的size()
方法)和空数组。
在低版本的 Java 中推荐使用初始化大小的数组,因为使用反射调用去创建一个合适大小的数组相对较慢。但是在 openJDK 6 之后的高版本中方法被优化了,传入空数组相比传入初始化大小的数组,效果是相同的甚至有时候是更优的。因为使用 concurrent 或 synchronized 集合时,如果集合进行了收缩,toArray()和size()方法可能会发生数据竞争,此时传入初始化大小的数组是危险的。
因此在高版本的 Java 上面可以改为:
List<String> list = new ArrayList<>();
String[] array = list.toArray(new String[0]);
参考:https://blog.csdn.net/QasimCyrus/article/details/88674516
最新文章
- POJ 2533 Longest Ordered Subsequence LCS O(n*log(n))
- AFNetworking到底做了什么
- codeforces 484C Strange Sorting Codeforces Round #276 (Div. 1) C
- OpneCV 二值图像区域处理
- u-boot、kernel和filesystem 执行过程分析
- 关于更新到Xcode8的一些问题
- UpYun上传 401 Unauthorized
- Oracle Linux 6.3下安装Oracle 11g R2(11.2.0.3)
- 自定义WCF的配置文件
- Spring-Struts2-基本集成
- Android虚拟机 USB转串口调试方法
- Valgrind简介
- web移动端区分Android或者ios系统
- 【阿里聚安全&#183;安全周刊】Intel芯片级安全漏洞事件|macOS存在漏洞
- Laravel 5.2数据库--填充数据
- 【bzoj1492】 NOI2007—货币兑换Cash
- Docker创建虚机和swarm
- [转] libtool的作用及应用
- IOS设备信息与机型对照表
- win32 zbar