浅谈:ArrayList,ListT,ListObject
最近看项目中有个地方用到了 List<Object> ,想到List<Object>能动态插入 object对象,而ArrayList也是动态插入object对象。我在想这两个是不是同样的功能呢,查看元数据代码如下:
ArrayList
public class ArrayList : IList, ICollection, IEnumerable, ICloneable
public virtual int Add(object value);//添加一个对象
List<T>
public class List<T> : IList<T>, ICollection<T>, IEnumerable<T>, IList, ICollection, IEnumerable
public void Add(T item);//添加一个对象
比较两者,发现两者的Add方法一个是可重写的,并且返回当前索引,一个就是void 方法,T item,当T为Object的时候,个人认为两者差距不大,但是他们如果Add 值类型的时候就会引发装箱操作,影响性能,通过测试发现(测试代码在附件中),ArrayList 和List<Object> 两者执行同样的操作,效率差不多,无论是有无拆装箱。但是,如果用到List<T> 时候,最好不要把 T 传入Object ,否则失去了泛型T 的意义。如果执行int操作,就用List<int>.
总的来说呢,程序开发过程中尽量避免拆装箱的操作,频繁的拆装箱会使效率降低很多。
题外话:以前看面试题目,问到ArrayList和List的区别,感觉一头雾水,直到现在才明白,原来问的是这么个问题,唉,程序不能只写,也得思考啊,另外,F12看程序元数据也是不错的学习方法。附上程序运行结果,不过有偏差,如果单独运行ArrayList 或者List<Object> 它俩结果就相差不大,可是把List<Object>放在ArrayList后边运行,就会显得慢一些,估计也有程序问题吧,就到这了。以上纯属个人见解,如果错误,请不吝指出。
转载于:https://blog.51cto.com/panzi/1591247
浅谈:ArrayList,ListT,ListObject相关推荐
- 浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- Java 线上问题排查神器 Arthas 快速上手与原理浅谈
[Arthas 官方社区正在举行征文活动,参加即有奖品拿哦~点击投稿] 作者 | 杨桢栋,笔名叫蛮三刀把刀,是一名一线互联网码农,留美访学一年,主要关注后端开发,数据安全,爬虫,物联网,边缘计算等方向 ...
- java bitset用途_浅谈Java BitSet使用场景和代码示例
搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...
- java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰
今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...
- 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁
浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...
- java list数组排序_浅谈对象数组或list排序及Collections排序原理
常需要对list进行排序,小到List,大到对自定义的类进行排序.不需要自行归并或堆排序.简单实现一个接口即可. 本文先会介绍利用Collections对List进行排序,继而讲到Collection ...
- java缓存同步_浅谈JSON的数据交换、缓存问题和同步问题
JSON轻量级的数据交换格式 相对于XML来说,JSON的解析速度更快,文档更小. JSON的格式 {属性名:属性值,属性名:属性值,--} 属性名的类型可以是string,number,boolea ...
- 浅谈“三层结构”原理与用意(转帖)
浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...
- java中的强制类型转换注意事项_浅谈Java中强制类型转换的问题
为了更好的理解我们先看下面的例子: package com.yonyou.test; import java.util.ArrayList; import java.util.Iterator; im ...
最新文章
- JAVA基础——编程练习(一)
- 手表可测血压,耳机支持颈椎保护……这届电子设备越来越“养生”了
- 什么是重构,什么不是重构
- rxjs里的Observable对象如何消费
- .NET工资低?那肯定是你打开的方式不正确
- php如何数字转字符串,php如何实现数字转字符串
- 真正的正数、负数、整数等正则表达式,网上好多都是错的
- 教你在SQL Server数据库中设计表和字段
- 苹果耳机无线真假测试软件,苹果耳机“真伪”终极鉴别来了,原来,区别如此大!...
- python 白噪声函数_干货 | 20个教程,掌握时间序列的特征分析(附代码)
- .Net平台下安装DotNetBar
- c语言与或非,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
- JavaScript代码模拟鼠标自动点击事件
- 萤石云回放时服务器无响应,萤石云手机回放看不了
- java中equals方法重写详解(彻底搞定)
- Axure RP 从入门到精通(四十二)案例 - 淘宝搜索框
- Zhong__Centos8安装docker
- 2018端午小长假人气榜发布:上海迪士尼蝉联景区人气榜首
- 仿抖音右滑清屏,左滑列表功能
- SAP中外协加工BOM物料消耗问题处理实例
热门文章
- 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件
- Linux中fdisk硬盘分区方法
- Android 核心分析之十二Android GEWS窗口管理之基本架构原理
- 第01篇:C#星夜拾遗之如何开始C#学习
- 完整opencv(emgucv)人脸、检测、采集、识别、匹配、对比
- IOS开发基础之大转盘案例
- PHP中text里数字相加,excel文字数字如何混合求和
- 文件包含——远程包含shell(三)
- 中国蚁剑 代码解压出错:【object Object】解决方法
- cygwin swoole_swoole入门--------基础概念