List.toArray(Object [])性能

Muh*_*ana 7 java performance toarray

我发现了一个List对象的,然后我用Apache Commons Collection4所获得的变换List来自具有实例具有实例.

    listOfBs = (List<B>) CollectionUtils.collect(listOfAs, componentTransformer);
Run Code Online (Sandbox Code Playgroud)

不过,最终我需要有一个Array烧烤不是List.

所以我的问题是,哪个更快.

  1. 使用转换列表 CollectionUtils.collect
  2. 使用创建数组 listOfBs.toArray(new B[listOfBs.size()])

要么

  1. 循环过来 listOfAs
  2. 将每个A对象转换为B对象
  3. 将每个B对象添加到数组(B [])

第一种方法和第二种方法的区别在于第一种方法的代码少得多,但我不确定toArray方法是否隐藏了一个隐藏的循环或昂贵的操作.

我在第二种方法中看到的是,我确信我只会在listOfAs列表上循环一次.

那么哪种方法更快

kir*_*wka 5

不要担心List.toArray()的性能,它的复杂性是线性的,因为它将在内部诉诸单个循环。

由于它是用Arrays.copyOf实现的,最终会变成System.arraycopy,它是在本机代码中实现的,因此它可能比 java 级循环更快。