集合转数组 toArray

使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一致、长度为 0 的空数组。

反例:直接使用 toArray 无参方法存在问题,此方法返回值只能是 Object[]类,若强转其它类型数组将出现 ClassCastException 错误。

1
Object[] objects = list.toArray();

正例:

1
2
3
4
5
List<String> list = new ArrayList<>(2);
list.add("aaa");
list.add("bbb");
String[] array = list.toArray(new String[0]);
System.out.println(Arrays.toString(array));

说明:使用 toArray 带参方法,数组空间大小的 length:

1)等于 0,动态创建与 size 相同的数组,性能最好。

2)大于 0 但小于 size,重新创建大小等于 size 的数组,增加 GC 负担。

3)等于 size,在高并发情况下,数组创建完成之后,size 正在变大的情况下,负面影响与 2 相同。

4)大于 size,空间浪费,且在 size 处插入 null 值,存在 NPE 隐患。

 

来源: Java开发手册1.7.1 - (六) 集合处理 - 9

posted @   草木物语  阅读(158)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示