Java 按lambda、固定大小列表或空构造函数排列

Java 按lambda、固定大小列表或空构造函数排列,java,performance,Java,Performance,我阅读了上一篇文章,想知道这在>jdk9时是否仍然有效: 第1版(根据之前的帖子,速度最快): 版本3(使用lambda表达式,已知其静态访问速度快): 和版本4(根据上一篇文章,这是最慢的): 或者说,今天的版本之间没有区别吗?它在任何地方都有效,而强大的Shipilev就在不久前 有一个原因是List::toArray有一个默认方法,因为jdk-11如下所示: default <T> T[] toArray(IntFunction<T[]> generator) {

我阅读了上一篇文章,想知道这在>jdk9时是否仍然有效:

第1版(根据之前的帖子,速度最快):

版本3(使用lambda表达式,已知其静态访问速度快):

和版本4(根据上一篇文章,这是最慢的):

或者说,今天的版本之间没有区别吗?

它在任何地方都有效,而强大的Shipilev就在不久前

有一个原因是
List::toArray
有一个默认方法,因为
jdk-11
如下所示:

 default <T> T[] toArray(IntFunction<T[]> generator) {
    return toArray(generator.apply(0));
}
默认T[]到阵列(IntFunction generator){
返回阵列(生成器。应用(0));
}

很有趣。因此,我得出结论:
CompletableFuture[]:new
newcompletablefuture[0])
完全相同?因为第一个函数也接受
IntFunction
。如果我错了,请纠正我。@nimo23不,不是。那
CompletableFuture[]::new
实际上是
x->newcompletablefuture[x]
…哦,是的,那是一个lambda。因此,我将坚持使用版本1或版本2。谢谢
futures.toArray(new CompletableFuture[0]))
futures.toArray(CompletableFuture[]::new)
futures.toArray(new CompletableFuture[futures.size()])
 default <T> T[] toArray(IntFunction<T[]> generator) {
    return toArray(generator.apply(0));
}