最近看项目中有个地方用到了 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相关推荐

  1. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

  2. Java 线上问题排查神器 Arthas 快速上手与原理浅谈

    [Arthas 官方社区正在举行征文活动,参加即有奖品拿哦~点击投稿] 作者 | 杨桢栋,笔名叫蛮三刀把刀,是一名一线互联网码农,留美访学一年,主要关注后端开发,数据安全,爬虫,物联网,边缘计算等方向 ...

  3. java bitset用途_浅谈Java BitSet使用场景和代码示例

    搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...

  4. java中修饰常量的事_浅谈java中的声明常量为什么要用static修饰

    今天定义一个类常量,想着也只有这个类可以用到,就没用static关键字修饰.结果sonar代码检查提示: Rename this field "PERSON_TYPE_USER" ...

  5. 浅谈Java锁,与JUC的常用类,集合安全类,常用辅助类,读写锁,阻塞队列,线程池,ForkJoin,volatile,单例模式不安全,CAS,各种锁

    浅谈JUC的常用类 JUC就是java.util.concurrent-包下的类 回顾多线程 Java默认有几个线程? 2 个 mian.GC Java 真的可以开启线程吗? 开不了,点击源码得知:本 ...

  6. java list数组排序_浅谈对象数组或list排序及Collections排序原理

    常需要对list进行排序,小到List,大到对自定义的类进行排序.不需要自行归并或堆排序.简单实现一个接口即可. 本文先会介绍利用Collections对List进行排序,继而讲到Collection ...

  7. java缓存同步_浅谈JSON的数据交换、缓存问题和同步问题

    JSON轻量级的数据交换格式 相对于XML来说,JSON的解析速度更快,文档更小. JSON的格式 {属性名:属性值,属性名:属性值,--} 属性名的类型可以是string,number,boolea ...

  8. 浅谈“三层结构”原理与用意(转帖)

    浅谈"三层结构"原理与用意 序 在刚刚步入"多层结构"Web应用程序开发的时候,我阅读过几篇关于"asp.net三层结构开发"的文章.但其多 ...

  9. java中的强制类型转换注意事项_浅谈Java中强制类型转换的问题

    为了更好的理解我们先看下面的例子: package com.yonyou.test; import java.util.ArrayList; import java.util.Iterator; im ...

最新文章

  1. JAVA基础——编程练习(一)
  2. 手表可测血压,耳机支持颈椎保护……这届电子设备越来越“养生”了
  3. 什么是重构,什么不是重构
  4. rxjs里的Observable对象如何消费
  5. .NET工资低?那肯定是你打开的方式不正确
  6. php如何数字转字符串,php如何实现数字转字符串
  7. 真正的正数、负数、整数等正则表达式,网上好多都是错的
  8. 教你在SQL Server数据库中设计表和字段
  9. 苹果耳机无线真假测试软件,苹果耳机“真伪”终极鉴别来了,原来,区别如此大!...
  10. python 白噪声函数_干货 | 20个教程,掌握时间序列的特征分析(附代码)
  11. .Net平台下安装DotNetBar
  12. c语言与或非,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
  13. JavaScript代码模拟鼠标自动点击事件
  14. 萤石云回放时服务器无响应,萤石云手机回放看不了
  15. java中equals方法重写详解(彻底搞定)
  16. Axure RP 从入门到精通(四十二)案例 - 淘宝搜索框
  17. Zhong__Centos8安装docker
  18. 2018端午小长假人气榜发布:上海迪士尼蝉联景区人气榜首
  19. 仿抖音右滑清屏,左滑列表功能
  20. SAP中外协加工BOM物料消耗问题处理实例

热门文章

  1. 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件
  2. Linux中fdisk硬盘分区方法
  3. Android 核心分析之十二Android GEWS窗口管理之基本架构原理
  4. 第01篇:C#星夜拾遗之如何开始C#学习
  5. 完整opencv(emgucv)人脸、检测、采集、识别、匹配、对比
  6. IOS开发基础之大转盘案例
  7. PHP中text里数字相加,excel文字数字如何混合求和
  8. 文件包含——远程包含shell(三)
  9. 中国蚁剑 代码解压出错:【object Object】解决方法
  10. cygwin swoole_swoole入门--------基础概念