Java集合框架之ArrayList浅析

一、ArrayList综述:

  位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,jdk1.8中对ArrayList的定义如下

  public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable

  可见ArrayList继承自AbstractList,主要实现了List接口

  ArrayList底层采用数组存储元素的,所以ArrayList适合查询,不适合频繁的随机增删元素

  可以说 ArrayList 是我们使用最多的 List 集合,它有以下特点:

    • 容量不固定,想放多少放多少(当然有最大阈值,但一般达不到)
    • 有序的(元素输出顺序与输入顺序一致)
    • 元素可以为 null
    • 效率高
      • size(), isEmpty(), get(), set() iterator(), ListIterator() 方法的时间复杂度都是 O(1)
      • add() 添加操作的时间复杂度平均为 O(n)
      • 其他所有操作的时间复杂度几乎都是 O(n)
    • 占用空间更小
      • 对比 LinkedList,不用占用额外空间维护链表结构

二、方法摘要:

  2.1构造方法摘要:

ArrayList()
          构造一个初始容量为 10 的空列表。
ArrayList(Collection<? extends E> c)
          构造一个包含指定
collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。
ArrayList(int initialCapacity)

          构造一个具有指定初始容量的空列表。

  2.2方法摘要

boolean add(E e)   将指定的元素添加到此列表的尾部。
 void add(int index, E element)
  将指定的元素插入此列表中的指定位置。
 boolean addAll(Collection<? extends E> c)
          按照指定
collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。
 boolean addAll(int index,
Collection<? extends E> c)


          从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。
 void clear()
  移除此列表中的所有元素。
 Object clone()
  返回此 ArrayList 实例的浅表副本。
 boolean contains(Object o)
  如果此列表中包含指定的元素,则返回 true
 void ensureCapacity(int minCapacity)

          如有必要,增加此 ArrayList
实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。
 E get(int index)
  返回此列表中指定位置上的元素。
 int indexOf(Object o)  返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。
 boolean isEmpty()
  如果此列表中没有元素,则返回 true
 int lastIndexOf(Object o)
  返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。
 E remove(int index)
  移除此列表中指定位置上的元素。
 boolean remove(Object o)
  移除此列表中首次出现的指定元素(如果存在)。
protected
 void
removeRange(int fromIndex,
int toIndex)

          移除列表中索引在 fromIndex(包括)和
toIndex(不包括)之间的所有元素。
 E set(int index, E element)
  用指定的元素替代此列表中指定位置上的元素。
 int size()
  返回此列表中的元素数。
 Object[] toArray()
  按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
<T>
T[]
toArray(T[] a)

          按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。
 void trimToSize()
  将此 ArrayList 实例的容量调整为列表的当前大小。

参考:http://blog.csdn.net/u011240877/article/details/52853989

Java集合框架之ArrayList浅析的更多相关文章

  1. Java集合框架之HashMap浅析

    Java集合框架之HashMap浅析 一.HashMap综述: 1.1.HashMap概述 位于java.util包下的HashMap是Java集合框架的重要成员,它在jdk1.8中定义如下: pub ...

  2. Java集合框架之Vector浅析

    Java集合框架之Vector浅析 一.Vector概述: 位于java.util包下的Vector是Java集合框架的重要一员,虽然没有ArrayList那么的常用,但是我们还要对其做相关学习: 1 ...

  3. Java集合框架之LinkedList浅析

    Java集合框架之LinkedList浅析 一.LinkedList综述: 1.1LinkedList简介 同ArrayList一样,位于java.util包下的LinkedList是Java集合框架 ...

  4. Java集合框架之TreeMap浅析

    Java集合框架之TreeMap浅析 一.TreeMap综述: TreeMap在Map中的结构如下:

  5. Java集合框架之TreeSet浅析

    Java集合框架之TreeSet浅析 一.TreeSet综述: 1.1TreeSet简介: TreeSet是Java集合框架的重要成员,先来看看TreeSet在jdk1.8中的定义吧: public ...

  6. Java集合框架之HashSet浅析

    Java集合框架之HashSet浅析 一.HashSet综述: 1.1HashSet简介 位于java.util包下的HashSet是Java集合框架的重要成员,它在jdk1.8中定义如下: publ ...

  7. Java——集合框架之ArrayList,LinkedList,迭代器Iterator

    概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...

  8. java集合框架03——ArrayList和源码分析

    最近忙着替公司招人好久没写了,荒废了不好意思. 上一章学习了Collection的架构,并阅读了部分源码,这一章开始,我们将对Collection的具体实现进行详细学习.首先学习List.而Array ...

  9. Java集合框架(一)-ArrayList

    大佬理解->Java集合之ArrayList 1.ArrayList的特点 存放的元素有序 元素不唯一(可以重复) 随机访问快 插入删除元素慢 非线程安全 2.底层实现 底层初始化,使用一个Ob ...

随机推荐

  1. Quartus ii调试技巧_01

    前几天李主任跟我分享了一些特别好用的调试技巧: 1)System Sources and Probes Editor---类似于人为设置触发条件,创建虚拟按键等功能,这段时间一直在做一个电机的驱动,板 ...

  2. win8上安装sql server (2008 and 2008 R2)存在兼容性问题怎么解决

     安装sql2008R2之前,需要先下载"AccessDatabaseEngine"组件并安装(百度上搜索下载就可以了),打补丁重启,再安装sql2008,安装时候提示兼容性问 ...

  3. django第二次 (转自刘江)

    除了我们前面说过的普通类型字段,Django还定义了一组关系类型字段,用来表示模型与模型之间的关系. 一.多对一(ForeignKey) 多对一的关系,通常被称为外键.外键字段类的定义如下: clas ...

  4. 树状数组(binary index tree)

    概述 修改和查询复杂度为log(n)的数据结构,所有奇数位的数和原数位置相同,偶数位置是原数组若干位置的和. 假如原数组A(a1, a2, a3, a4 ...),和其对应的树状数组C(c1, c2, ...

  5. .Net Core CLR FileFormat Call Method( Include MetaData, Stream, #~)

    .Net Core  CLR PE 文件启动方法,找到函数入口点,调用整个.Net 程式宿主. 使用方法:可以利用Visual Studio新建一个控制台应用程序,然后生成DLL,替换掉本程序DLL, ...

  6. 再记一次经典Net程序的逆向过程

    1.前言 上次发完,有网友问了一个问题:如果不绕过编译,而是直接编译怎么办? 记一次Net软件逆向的过程:https://www.cnblogs.com/dotnetcrazy/p/10142315. ...

  7. Java虚拟机学习笔记(一)之初识

    一:特定 跨平台性.安全性.可移植性. 二:体系机构 Java 体系结构包括四个独立但相关的技术: Java程序设计语言 Java Class文件格式 Java 应用编程接口(API) Java 虚拟 ...

  8. codeforces 576 div2 A-D题解

    A题 Description 题目链接: https://codeforces.com/contest/1199/problem/A 题意: 给定长度为n(1≤n≤100000)的一个序列a,以及两个 ...

  9. Java编程基础阶段笔记 day 07 面向对象编程(上)

    ​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个 ...

  10. PIP键盘设置实时时钟--智能模块

    大家好,许久没来发帖,今天带来点干货.希望大家多多讨论,相互学习. 使用 TOPWAY Smart LCD (HMT050CC-C) PIP键盘设置实时时钟   第一步  建立工程  第二步  建立2 ...