java中ArrayList类的操作
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类的操作相关推荐
- Java中Properties类的操作
Java中Properties类的操作 ============================================= com.gordon.constant Constant.java: ...
- java remove removeat_2016.3.12 Java中ArrayList类详解(转)
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- Java中 ArrayList类常用方法和遍历
ArrayList类对于元素的操作,基本体现在--增.删.查.常用的方法有: public boolean add(E e) :将指定的元素添加到此集合的尾部. public E remove(in ...
- Java中ArrayList类的常用方法
ArrayList对象是可变数组,可以不设置长度.下面介绍一些常用方法.该对象是从0下标开始计算的.主要分成四个部分,增加元素,删除元素,修改元素,查找元素. 是有序的 目录 一.增加元素 二.删除元 ...
- Java中ArrayList类的用法
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和ILis ...
- java中LinkedList类的操作
LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法. 在LinkedList类中存在很多方法 ...
- java math四舍五入类,Java中Math类的几个四舍五入方法的区别
JAVA取整以及四舍五入 下面来介绍将小数值舍入为整数的几个方法:Math.ceil().Math.floor()和Math.round(). 这三个方法分别遵循下列舍入规则: Math.ceil() ...
- java中ArrayList和LinkedList的区别
首先来看ArrayList和LinkedList的集成类和接口的区别.// lang java public class ArrayList<E> extends AbstractList ...
- 一文读懂Java中File类、字节流、字符流、转换流
一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...
最新文章
- pg数据库json数据类型_PG数据类型
- 详解MariaDB数据库的触发器
- 【转载】x86和x64
- RabbitMQ 记录
- ASP.NET Web API路由规则(二)
- flash大作业一分钟源文件_初中生写作业慢的7个原因及对策
- ubuntu下安装jre的步骤
- (13)拨云见日,闲聊哈希表
- Dungeon Master 地下城大师(BFS进阶)
- 第九章-安装RPM包或源码包
- python 抢红包 不越狱_这个Python脚本牛逼了,秒抢红包and无视撤回消息
- 如何从零开始系统运营微信公众号?
- hsqldb mysql_HSQLDB的研究与性能测试(与Mysql对比)
- mysql复合索引加锁_Mysql加锁过程详解
- PAT 1010 月饼
- Redis 核心知识——01
- 算法回顾---贝叶斯分类器
- python抢票代码运行内存越来越大_50 个加速包都抢不到车票,还不如这个 Python 抢票神器...
- python的range函数用法和实例
- audition cc变声插件_Adobe Audition CC怎么安装插件?
热门文章
- NSURLCache缓存使用简介
- amd核芯显卡控制面板自定义分辨率_AMD翻盘,NVIDIA翻车,你的下一张光追显卡选哪个...
- java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...
- jieba结巴分词--关键词抽取_结巴中文分词原理分析2
- oracle crs 命令,ORACLE RAC CRSCTL 命令使用 及 执行的用户
- python集合数据结构_Python数据结构-集合
- google 浏览器默认打开控制台_chrome浏览器使用 Console(控制台)
- oracle插入未调用并行,oracle并行之概念篇
- word表格图片自动适应表格大小_Excel应用实践20:使用Excel中的数据自动填写Word表格...
- 王者体验服服务器注册人数已满,王者官方大厅奖励有多难获得?服务器直接崩溃,玩家:别发红包了...