本问题已经有最佳答案,请猛点这里访问。

我得到对象A的List,然后使用Apache Commons Collection4将获得的List从具有A实例转换为具有B实例。

listOfBs = (List) CollectionUtils.collect(listOfAs, componentTransformer);

但是,最终我需要B的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时,它正在遍历列表和转换对象,这是您使用替代方法的前两个步骤

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

由于它是使用Arrays.copyOf来实现的,而Arrays.copyOf最终是用本机代码实现的,因此是System.arraycopy所实现的,它可能甚至比Java级循环还快。

线性是什么意思?

我的意思是性能(时间)与输入大小成正比,因为它基于单个循环。

阅读这篇文章非常有趣:http://shipilev.net/blog/2016/arrays-wisdom-ancients/#_conclusion

它详细介绍了将List转换为数组的不同方法。

结论:不要使用您所说的listOfBs.toArray(new B[listOfBs.size()]),而是使用listOfBs.toArray(new B[0])。

信不信由你,这会更快。

java object toarray_关于java:List.toArray(Object [])性能相关推荐

  1. JAVA学习笔记--类型转换(父类子类 Object 基本类型 String) 拆装箱 包装类

    最近一段时间忙着学习JAVA,本来net学的也不怎么好,趁着这个机会转下方向学习JAVA.不过.NET core的开源还是有点搞头的,微软了解一下.接下来几天我也会陆续写一些内容关于线程和集合等方面, ...

  2. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

  3. 从 Java 到 Scala(二):object

    本文由 Rhyme 发表在 ScalaCool 团队博客. object是一种让静态回归常态.打破模式.天然的语言特性. 其实在写这篇文章之前,我思绪万千,迟迟不能落笔,总想着自己会不会遗漏了某个知识 ...

  4. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  5. Java基础学习总结(7)——Object类

    2019独角兽企业重金招聘Python工程师标准>>> 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父 ...

  6. java object 详解_Java基础之Object类详解

    类Object是类层次结构的根类.每个类都直接或者间接地继承Object类.所有对象(包括数组)都实现这个类的方法.Object类中的构造方法只有一个,并且是无参构造方法,这说明每个类中默认的无参构造 ...

  7. 第三次学JAVA再学不好就吃翔(part45)--Object类

    学习笔记,仅供参考 文章目录 API概述 Object类 hashCode()方法 getClass()方法 toString()方法 equals()方法 ==与equals()方法的区别 API概 ...

  8. java的class和object_Java中Class/Object/T的关系

    Object 对象 Object是Java中的基类,大部分的对象都是继承于这个类. public class Object { .... public native int hashCode(); p ...

  9. java面试题27 java中下面哪些是Object类的方法()

    java面试题27 java中下面哪些是Object类的方法() A notify() B notifyAll() C sleep() D wait() 蒙蔽树上蒙蔽果,蒙蔽树下你和我.遇到这种题,我 ...

最新文章

  1. Ruby中的设计模式——《松本行弘的程序世界》
  2. 解决ping 127.0.0.1 一般故障 问题
  3. 为什么停车类APP看似缺口巨大却没有成长起来?
  4. TFS2013 微软源代码管理工具 安装与使用图文教程
  5. 那些功能逆天,却鲜为人知的pandas骚操作
  6. 世界是沙粒还是宇宙_看到一个沙粒世界:再一次你好世界
  7. 使用Spring Boot和H2可以正常工作的原型
  8. global全局变量
  9. python sklearn svm 权重_sklearn svm基本使用
  10. python的知识点运用_Python基础知识点
  11. Telepresence修改完善心得
  12. Linux-DHCP服务器
  13. 论文阅读:普适边缘计算环境下的区块链资源分配与共识
  14. Windows 10新版可以更新了!这些新功能值得升级
  15. 数字孪生医院:一个围绕着智慧医院决策的建模、管理和行动闭环的全新方式...
  16. 【Python】批量移动同类型文件到其他文件夹的办公技巧
  17. 圣天诺 LDK - SL (高强度许可证授权产品)
  18. html前端 rem布局,完美兼容各手机端的尺寸,自适应布局
  19. 星际文件系统优点和原理
  20. IFE阶段二学习总结

热门文章

  1. ppt文件太大怎么压缩变小,4个方法快速学
  2. 专访联软科技祝青柳:砌起数字时代“防火墙”,构建可控的互联世界
  3. Google日志glog
  4. R 语言并行计算 spearman 相关系数,加快共现网络(co- occurrence network)构建速度
  5. 题目62 简易压缩算法
  6. 产品经理懂点技术之:4K/8K
  7. android 自定义viewgroup onmeasure,Android进阶——自定义View之View的绘制流程及实现onMeasure完全攻略...
  8. 你知道什么是Python里的鸭子类型和猴子补丁吗?
  9. 北邮CSAPP第三章之数据格式与程序编码
  10. 杂谈:软件问价多少钱?