Java中ArrayList集合

来源:互联网 发布:淘宝卖家7天不发货 编辑:程序博客网 时间:2024/06/17 07:24

一、ArrayList介绍

1.ArrayList继承关系

ArrayListAPI

2.定义

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

3.简介

1. ArrayList是一个可变数组,与Java中数组相比,它的容量是动态增长的,它继承自AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。2. ArrayList继承AbstractList,实现了List,提供了对集合元素进行增、删、改、查等操作的方法。3. ArrayList 实现了RandmoAccess接口,即提供了随机访问功能。4. ArrayList 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。5. ArrayList 实现java.io.Serializable接口,即ArrayList支持序列化,能通过序列化去传输。6. 与Vector的不同之处在于,ArrayList的相关操作不是同步的,也就是说ArrayList的相关操作是线程不安全的,建议在单线程中使用。

二、ArrayList构造方法

  1. 除Connection接口规范的建议的两个构造方法之外,还有一个指定初始容量的构造方法
    ArrayList构造方法

三、ArrayList中的方法

  1. 除了实现List 接口之外,该类还提供了一些操纵内部数组elementData大小的方法

四、ArrayList数据结构

ArrayList中包含两个重要变量

1.elementData

elementData
elementData是ArrayList中存储数据的Object[],它保存添加到ArrayList中的元素,elementData实现了一个动态数组,我们可以用构造函数ArrayList(int initialCapacity)创建ArrayList对象并指定容量为initialCapacity,如果用构造函数ArrayList()创建ArrayList对象,默认的容量为10;
默认的容量

2.size

size
1. size是ArrayList的实际容量;
2. 由于ArrayList实现的是动态数组的效果,所以数组的容量是可以动态增长的,每次添加元素的时候都会判断添加后的容量是否超出现有容量,如果超出现有容量则容量会进行自动增长,在不同版本的JDK中具体增长方式也有所不同,例如在JDK1.8中,具体增长方式:新的容量=原容量+(原容量>>1);
这里写图片描述

五、ArrayList遍历方式

1.迭代器遍历

        List<String> list=new ArrayList<String>();        list.add("a");        list.add("b");        list.add("c");        Iterator<String> it=list.iterator();        while(it.hasNext()){            System.out.println(it.next());        }

2.随机访问遍历

        List<String> list=new ArrayList<String>();        list.add("a");        list.add("b");        list.add("c");        for(int i=0;i<list.size();i++){            System.err.println(list.get(i));        }

3.for-each循环遍历

        List<String> list=new ArrayList<String>();        list.add("a");        list.add("b");        list.add("c");        for (String string : list) {            System.out.println(string);        }
原创粉丝点击