开发者社区> 问答> 正文

Replace toArray(new T[size]) with toArray(new T[0]

注意到许多toArray的出现,通过查找和替换可以使其更快。

性能:将toArray(新T[size])替换为toArray(旧T[0])

https://shipilev.net/blog/2016/arrays-wisdom-ancients/#_conclusion(还包含基准)。

可以提供一些简单的性能改进,谢谢!

原提问者GitHub用户re-thc

展开
收起
山海行 2023-07-05 19:45:30 44 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    使用 toArray(new T[0]) 而不是 toArray(new T[size]) 有几个好处:

    可变长度。使用 new T[0] 可以让数组自动增长为列表的实际大小,而不需要预设大小。

    避免内存浪费。当你预设一个太大的数组大小时,会造成内存浪费。使用 new T[0] 可以让数组只分配必要的内存。

    简单。new T[0] 代码更简洁,不需要预估数组大小。

    2023-07-30 15:46:24
    赞同 展开评论 打赏
  • toArray(new T[size]) 创建一个新的数组,并将集合中的元素复制到新数组中。这需要额外的内存分配和元素复制操作,可能会导致性能损失。

    toArray(new T[0]) 创建一个长度为0的临时数组,并将其传递给 toArray 方法。底层实现会根据集合的大小创建一个新的数组,并将元素复制到新数组中。由于临时数组的长度为0,实际创建的新数组长度会根据集合的大小进行调整,因此可以避免额外的内存分配和元素复制操作。

    2023-07-11 09:48:14
    赞同 展开评论 打赏
  • 对于ArrayList,list.toArray(new String[list.size()])比list.toArray(new String[0])具有更好的性能

    原回答者GitHub用户wenshao

    2023-07-06 11:06:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载