注意到许多toArray的出现,通过查找和替换可以使其更快。
性能:将toArray(新T[size])替换为toArray(旧T[0])
https://shipilev.net/blog/2016/arrays-wisdom-ancients/#_conclusion(还包含基准)。
可以提供一些简单的性能改进,谢谢!
原提问者GitHub用户re-thc
使用 toArray(new T[0]) 而不是 toArray(new T[size]) 有几个好处:
可变长度。使用 new T[0] 可以让数组自动增长为列表的实际大小,而不需要预设大小。
避免内存浪费。当你预设一个太大的数组大小时,会造成内存浪费。使用 new T[0] 可以让数组只分配必要的内存。
简单。new T[0] 代码更简洁,不需要预估数组大小。
toArray(new T[size]) 创建一个新的数组,并将集合中的元素复制到新数组中。这需要额外的内存分配和元素复制操作,可能会导致性能损失。
toArray(new T[0]) 创建一个长度为0的临时数组,并将其传递给 toArray 方法。底层实现会根据集合的大小创建一个新的数组,并将元素复制到新数组中。由于临时数组的长度为0,实际创建的新数组长度会根据集合的大小进行调整,因此可以避免额外的内存分配和元素复制操作。
对于ArrayList,list.toArray(new String[list.size()])比list.toArray(new String[0])具有更好的性能
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。