当使用如下代码将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

最新文章

  1. POJ 2533 Longest Ordered Subsequence LCS O(n*log(n))
  2. AFNetworking到底做了什么
  3. codeforces 484C Strange Sorting Codeforces Round #276 (Div. 1) C
  4. OpneCV 二值图像区域处理
  5. u-boot、kernel和filesystem 执行过程分析
  6. 关于更新到Xcode8的一些问题
  7. UpYun上传 401 Unauthorized
  8. Oracle Linux 6.3下安装Oracle 11g R2(11.2.0.3)
  9. 自定义WCF的配置文件
  10. Spring-Struts2-基本集成
  11. Android虚拟机 USB转串口调试方法
  12. Valgrind简介
  13. web移动端区分Android或者ios系统
  14. 【阿里聚安全&#183;安全周刊】Intel芯片级安全漏洞事件|macOS存在漏洞
  15. Laravel 5.2数据库--填充数据
  16. 【bzoj1492】 NOI2007—货币兑换Cash
  17. Docker创建虚机和swarm
  18. [转] libtool的作用及应用
  19. IOS设备信息与机型对照表
  20. win32 zbar

热门文章

  1. RVO和NRVO
  2. 国际化---demo1---bai
  3. Python代码规范总结
  4. DataGrid 单元格输入验证 由ValidatingEditor事件完成
  5. javascript——对象的概念——函数 3 (使用技巧)
  6. mysql中表触发器的简单使用
  7. DAY7-面向对象之多态与多态性
  8. 6-EasyNetQ之订阅
  9. 2.2.3 Analyzing the output 分析对用户推荐书目的结果(2)
  10. DHCP工作工程