【发布时间】:2014-05-19 17:42:10
【问题描述】:
我得到对象 A 的 List,然后我使用 Apache Commons Collection4 将获得的 List 从具有 A 实例转换为具有 B 个实例。
listOfBs = (List<B>) CollectionUtils.collect(listOfAs, componentTransformer);
但是,最终我需要一个 Bs 的 Array 而不是 List。
所以我的问题是,哪个更快。
- 使用
CollectionUtils.collect转换列表 - 使用
listOfBs.toArray(new B[listOfBs.size()])创建一个数组
或者
- 循环遍历
listOfAs - 将每个 A 对象转换为 B 对象
- 将每个 B 对象添加到数组 (B[])
第一种方法和第二种方法的区别在于第一种方法的代码少得多,但我不确定 toArray 方法是否存在隐藏循环或昂贵的操作。
我在第二种方法中看到的是,我确信我只会在 listOfAs 列表上循环一次。
那么哪种方法更快?
【问题讨论】:
-
为什么不一步一步转换收集成数组呢?您不必强制使用
CollectionUtils。更好的是,只需使用 Java 8。 -
我目前不能使用 Java 8,尽管我想知道 Java 8 提供的功能名称。我可以循环和转换对象,但代码越少越好。因此,如果
toArray不会对性能造成很大影响,我可能会使用它。 -
我认为没有太大区别,当您查看代码
CollectionUtils.collect时,它正在循环列表和转换对象,这是您替代方法的前两个步骤
标签: java performance toarray