我有以下一段代码,IntelliJ建议我应该更改:
String[] normalizedNames = rawToNormalized.values().stream().toArray(String[]::new);
到
String[] normalizedAliases = rawToNormalized.values().toArray(new String[0]);
Aleksey Shipilёv的帖子(https://shipilev.net/blog/2016/arrays-wisdom-ancients/)建议:
toArray(new T[0])看起来更快,更安全,合同更干净,因此现在应该是默认选择。
有人可以详细说明toArray(new String[0])
与toArray(String[]::new)
的确切区别,通过从流中使用toArray
而不Collector
.
toArray(new String[0])
仍然可以在流中使用吗?它仍然是一个性能更高/更好的选择吗?
我会遵循 intelliJ 作为一个简单的原因:
为什么要将列表进行流式传输以创建数组。另一方面,您可以直接将该列表转换为数组。
有人可以详细说明toArray(new String[0])与toArray(String[]::new)的确切区别,以及toArray(new String[0])是否仍然是性能更高/更好的选择?
intelliJ警告背后的想法是关于使用流befor toArray,而不是使用toArray的方式。