ArrayList类是Java集合框架出现之后用来取代Vector类的:

二者底层原理都是基于数组的算法,一模一样.

区别:
Vector: 所有的方法都使用了synchronized修饰符. 线程安全但是性能较低. 适用于多线程环境.
ArrayList:所有的方法都没有使用synchronized修饰符. 线程不安全但是性能较高.
即使以后在多线程环境下,我们也不使用Vector类:

ArrayList list = Collections.synchronizedList(new ArrayList(…));

常用方法参照与Vector类.

阅读源代码发现,Vector和ArrayList的源代码差异有点大(从设计上考虑).
有的时候某个方法需要返回一个ArrayList对象:
但是在该方法中,如果一个都没有查询到,我们不会返回null,我们会返回一个空集对象(没有元素的集合).
public ArrayList getAll()
{
//TODO
//return Collections.emptyList();//最好的方式.
return new ArrayList();//但是很多人最直观,最简单选用的方式
}
在Java7之前,即使使用new ArrayList创建对象,一个元素都不存储,但是在堆空间依然初始化了长度位10的Object数组,没必要.
从Java7开始优化这个设计,new ArrayList,其实底层创建的使用一个空数组.
Object [] elementData = new Object[]{};
在第一次调用add方法的时候,才会重新去初始化数组.

ArrayList底层实现方法

java中ArrayList类的操作相关推荐

  1. Java中Properties类的操作

    Java中Properties类的操作 ============================================= com.gordon.constant Constant.java: ...

  2. java remove removeat_2016.3.12 Java中ArrayList类详解(转)

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  3. Java中 ArrayList类常用方法和遍历

     ArrayList类对于元素的操作,基本体现在--增.删.查.常用的方法有: public boolean add(E e) :将指定的元素添加到此集合的尾部. public E remove(in ...

  4. Java中ArrayList类的常用方法

    ArrayList对象是可变数组,可以不设置长度.下面介绍一些常用方法.该对象是从0下标开始计算的.主要分成四个部分,增加元素,删除元素,修改元素,查找元素. 是有序的 目录 一.增加元素 二.删除元 ...

  5. Java中ArrayList类的用法

    1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...

  6. java中LinkedList类的操作

    LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法. 在LinkedList类中存在很多方法 ...

  7. java math四舍五入类,Java中Math类的几个四舍五入方法的区别

    JAVA取整以及四舍五入 下面来介绍将小数值舍入为整数的几个方法:Math.ceil().Math.floor()和Math.round(). 这三个方法分别遵循下列舍入规则: Math.ceil() ...

  8. java中ArrayList和LinkedList的区别

    首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...

  9. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

最新文章

  1. pg数据库json数据类型_PG数据类型
  2. 详解MariaDB数据库的触发器
  3. 【转载】x86和x64
  4. RabbitMQ 记录
  5. ASP.NET Web API路由规则(二)
  6. flash大作业一分钟源文件_初中生写作业慢的7个原因及对策
  7. ubuntu下安装jre的步骤
  8. (13)拨云见日,闲聊哈希表
  9. Dungeon Master 地下城大师(BFS进阶)
  10. 第九章-安装RPM包或源码包
  11. python 抢红包 不越狱_这个Python脚本牛逼了,秒抢红包and无视撤回消息
  12. 如何从零开始系统运营微信公众号?
  13. hsqldb mysql_HSQLDB的研究与性能测试(与Mysql对比)
  14. mysql复合索引加锁_Mysql加锁过程详解
  15. PAT 1010 月饼
  16. Redis 核心知识——01
  17. 算法回顾---贝叶斯分类器
  18. python抢票代码运行内存越来越大_50 个加速包都抢不到车票,还不如这个 Python 抢票神器...
  19. python的range函数用法和实例
  20. audition cc变声插件_Adobe Audition CC怎么安装插件?

热门文章

  1. NSURLCache缓存使用简介
  2. amd核芯显卡控制面板自定义分辨率_AMD翻盘,NVIDIA翻车,你的下一张光追显卡选哪个...
  3. java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...
  4. jieba结巴分词--关键词抽取_结巴中文分词原理分析2
  5. oracle crs 命令,ORACLE RAC CRSCTL 命令使用 及 执行的用户
  6. python集合数据结构_Python数据结构-集合
  7. google 浏览器默认打开控制台_chrome浏览器使用 Console(控制台)
  8. oracle插入未调用并行,oracle并行之概念篇
  9. word表格图片自动适应表格大小_Excel应用实践20:使用Excel中的数据自动填写Word表格...
  10. 王者体验服服务器注册人数已满,王者官方大厅奖励有多难获得?服务器直接崩溃,玩家:别发红包了...