java object toarray_关于java:List.toArray(Object [])性能
本问题已经有最佳答案,请猛点这里访问。
我得到对象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 [])性能相关推荐
- JAVA学习笔记--类型转换(父类子类 Object 基本类型 String) 拆装箱 包装类
最近一段时间忙着学习JAVA,本来net学的也不怎么好,趁着这个机会转下方向学习JAVA.不过.NET core的开源还是有点搞头的,微软了解一下.接下来几天我也会陆续写一些内容关于线程和集合等方面, ...
- 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 ...
- 从 Java 到 Scala(二):object
本文由 Rhyme 发表在 ScalaCool 团队博客. object是一种让静态回归常态.打破模式.天然的语言特性. 其实在写这篇文章之前,我思绪万千,迟迟不能落笔,总想着自己会不会遗漏了某个知识 ...
- java学习笔记6--类的继承、Object类
接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...
- Java基础学习总结(7)——Object类
2019独角兽企业重金招聘Python工程师标准>>> 一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父 ...
- java object 详解_Java基础之Object类详解
类Object是类层次结构的根类.每个类都直接或者间接地继承Object类.所有对象(包括数组)都实现这个类的方法.Object类中的构造方法只有一个,并且是无参构造方法,这说明每个类中默认的无参构造 ...
- 第三次学JAVA再学不好就吃翔(part45)--Object类
学习笔记,仅供参考 文章目录 API概述 Object类 hashCode()方法 getClass()方法 toString()方法 equals()方法 ==与equals()方法的区别 API概 ...
- java的class和object_Java中Class/Object/T的关系
Object 对象 Object是Java中的基类,大部分的对象都是继承于这个类. public class Object { .... public native int hashCode(); p ...
- java面试题27 java中下面哪些是Object类的方法()
java面试题27 java中下面哪些是Object类的方法() A notify() B notifyAll() C sleep() D wait() 蒙蔽树上蒙蔽果,蒙蔽树下你和我.遇到这种题,我 ...
最新文章
- Ruby中的设计模式——《松本行弘的程序世界》
- 解决ping 127.0.0.1 一般故障 问题
- 为什么停车类APP看似缺口巨大却没有成长起来?
- TFS2013 微软源代码管理工具 安装与使用图文教程
- 那些功能逆天,却鲜为人知的pandas骚操作
- 世界是沙粒还是宇宙_看到一个沙粒世界:再一次你好世界
- 使用Spring Boot和H2可以正常工作的原型
- global全局变量
- python sklearn svm 权重_sklearn svm基本使用
- python的知识点运用_Python基础知识点
- Telepresence修改完善心得
- Linux-DHCP服务器
- 论文阅读:普适边缘计算环境下的区块链资源分配与共识
- Windows 10新版可以更新了!这些新功能值得升级
- 数字孪生医院:一个围绕着智慧医院决策的建模、管理和行动闭环的全新方式...
- 【Python】批量移动同类型文件到其他文件夹的办公技巧
- 圣天诺 LDK - SL (高强度许可证授权产品)
- html前端 rem布局,完美兼容各手机端的尺寸,自适应布局
- 星际文件系统优点和原理
- IFE阶段二学习总结
热门文章
- ppt文件太大怎么压缩变小,4个方法快速学
- 专访联软科技祝青柳:砌起数字时代“防火墙”,构建可控的互联世界
- Google日志glog
- R 语言并行计算 spearman 相关系数,加快共现网络(co- occurrence network)构建速度
- 题目62 简易压缩算法
- 产品经理懂点技术之:4K/8K
- android 自定义viewgroup onmeasure,Android进阶——自定义View之View的绘制流程及实现onMeasure完全攻略...
- 你知道什么是Python里的鸭子类型和猴子补丁吗?
- 北邮CSAPP第三章之数据格式与程序编码
- 杂谈:软件问价多少钱?