Java记录 -42- Java ArrayList

public class ArrayList<E> extends AbstractList<E>i mplements List<E>, RandomAccess, Cloneable, Serializable

ArrayList是一个实现了List 接口的大小可变的array。实现了所有可选list操作,并包含了允许 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作array的大小,这里的array大小指内部用来存储list的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

这些操作如size、isEmpty、get、set、iterator 和 listIterator 都以固定时间运行(run in constant time)。add 操作以分摊的固定时间运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有操作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。

每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细节,因为这不只是添加元素会带来分摊固定时间开销那样简单。

ArrayList中只能存放对象,并且取值时是运行时判断而非编译时判断,即只有在运行时才能知道想要获取的对象和真正取出来的对象是否一致,是否会抛出异常。

几个特殊方法:

void add(int index, E element)

将指定的元素插入此列表中的指定位置。

boolean addAll(int index, Collection<? extends E> c)

从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。

boolean remove(Object o)

移除此列表中首次出现的指定元素(如果存在)。

protected void removeRange(int fromIndex, int toIndex)

移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。

时间: 2024-12-23 16:31:40

Java记录 -42- Java ArrayList的相关文章

Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 概要 上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayLis

将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold", "foreign exchange","fixed income", "futures", "options"}; List<String> assetList = Arrays.asList(asset);

Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法

Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动 等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,Linke

java集合系列之三(ArrayList)

上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayList.先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它.内容包括:第1部分 ArrayList简介第2部分 ArrayList数据结构第3部分 ArrayList源码解析(基于JDK1.6.0_45)第4部分 ArrayList遍历方式第5部分 toArray()异

java记录一维数组中多个相同值出现的位置下标

问题描述: 我需要在一个整数型一维数组中,找出相同数字出现的位置下标并记录. 例如: int[] test={3,3,1,1,2,5,1} 最终需要得到的是(数字-->出现的位置下标): 3 -->[0,1] 1 -->[2,3,6] 2 -->[4] 5 -->[5] 接下来通过代码实现我想要的功能,如下: package Test; import java.util.ArrayList; import java.util.LinkedHashMap; import jav

Java集合框架:ArrayList

ArrayList定义 package java.util; public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ private static final int DEFAULT_CAPACITY = 10; private static final Object[] EMPTY_ELEME

Java中Vector和ArrayList的区别

首先看这两类都实现List接口,而List接口一共有三个实现类,分别是ArrayList.Vector和LinkedList.List用于存放多个元素,能够维护元素的次序,并且允许元素的重复. 3个具体实现类的相关区别如下: ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组

【Java记录】try-with-resources的一个坑

[Java记录]try-with-resources的一个坑 今天处理 AsynchronousFileChannel 时候的一个问题,代码如下: public static void main(String[] args) throws Exception { String filePath = "/home/xe/git/osc/JavaNote/Lang/data/Test.java"; ExecutorService executorService = Executors.ne

由于工作需要,需要做java项目,谨记录学习java日常

之前也很初浅的接触过java,所以现在也算是新学习一门语言,基础初略看完,和C#区别并不大(据说就是不同公司,一批人搞出来的,想转行并不难). C#与Java 初识: 1,很多系统对象方法类似,相同的方法名,相同的作用,大小写有些许区别: 2,C#有代理和索引器,Java没有这个概念,布置Java的Controller不知道底层是否类似: 3,C#枚举类型应用比较多,Java项目略少见: 4,对异常的处理,C#更方便些(个人感觉),C#不提供throws关键字 5,不能通过声明来区别继承和接口实

java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map

1.错误描述 java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map at service.impl.BillServiceImpl.exportBillExcel(BillServiceImpl.java:336) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMet