ArrayList

       ArrayList是实现了基于动态数组的数据结构是一个数组队列,相当于动态数组也就说,ArrayList对象既有数组的特征,也有链表的特征。众所周知,数组是静态的,数组被初始化之后,数组长度就不能再改变了。Java中的数组相比,ArrayList的容量能动态增长,即可以动态增加和减少元素,动态改变其大小。ArrayList继承了AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。ArrayList可以灵活的设置数组的大

1、ArrayList的构造函数

1.1 ArrayList类支持3个构造方法

  //默认构造函数,该构造方法构造了一个空的链表。

  ArrayList()

  //capacityArrayList初始容量大小,当增加数据导致链表溢出时,链表容量会自动添加上一次容量大小的一半,该方法构造了一个指定大小但内容为空的链表

    ArrayList(int capacity)

  //创建包含collectionArrayList,该构造方法构造了一个包含指定元素集合的链表,注意,这里的字符E是一个标记,用来表示集合中元素的类型。

   ArrayList(Collection<? extends E>collection)

1.2 ArrayList构造方法应用举例 

  ArrayList list = new ArrayList(); //创建一个空数组链表

  ArrayList<String> list = new ArrayList<String>();//创建一个空的数组链表,用来存放String类型的对象

  ArrayList<Integer> list = new ArrayList<Integer>(7);//创建一个指定初始容量的数组链表

1.3 ArrayList常用方法

  添加方法

  • boolean add(Element e)
    增加指定元素到链表尾部。
  • void add(int index, Element e)
    增加指定元素到链表指定位置。

  将a添加到list中

  list.add("a");

  将c添加到list第2个元素后面

  list.add(2,"c");

ArrayList

 删除方法

  • boolean remove(Element e)
    删除链表中的指定元素。
  • void clear()
    清空ArrayList
  • void remove(int index)
    删除链表中指定位置的元素.
  • protected void removeRange(int start, int end)
    删除链表中从某一个位置开始到某一个位置结束的元素。

  将list中的数据"a"删除

  list.remove("a");

ArrayList

  清空list

  list.clear();

ArrayList

  将list中第2个数据删除

  list.remove(2);

ArrayList

  将list中从第1个到第4个之间的所有数据删除

  list.subList(2,4).clear();

ArrayList

  修改方法

  • E set(int index, E element)
    将链表中指定位置上的元素替换成新元素。

  将list中第2个元素,修改为A

  list.set(2, "A");

ArrayList

  查询方法

  • E get(int index)
    获取链表中指定位置处的元素.

  获取list中第2个元素

  String a = list.get(2);

ArrayList

   获取链表大小

  • int size()
    返回链表长度(链表包含元素的个数)。
ArrayList

1.4 ArrayList与自定义类结合应用

 由于在做一个工程时需要用到大量的ListViewGridView,我发现使用与自定义类结合的ArrayList会非常方便又利于扩展,省时省力。

     下面就举一个简单的例子来说明:

   要求完成一个类似电话簿的ListView,效果图如下

                   ArrayList

       布局文件其实很简单,主要是在主界面布局中添加ListView了控件,同时还要建立ListView中每个Item的布局文件,当然相对应的我们要为其编写自定义适配器类MainAdapter,此时为了方便Item数据的加载、管理以及将来代码移植的便捷性,我们要再多创建一个类,这个类就是ArrayList中所放元素集合的类型

    布局的部分代码如下图所示:

ArrayList

ArrayList


2、ArrayList可以存放的数据类型

ArrayList类只支持对象类型,不支持基础数据类型。就是说ArrayList对象只能存放对象,不能存放基础数据类型的数据。只要是Object的子类,ArrayList都可以存放。

3、ArrayList与LinkList

  参考自博客:http://blog.csdn.net/wuchuanpingstone/article/details/6678653

       ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构。 

    对于随机访问getset,ArrayList优于LinkedList,因为ArrayList可以随机定位,而LinkedList要移动指针一步一步的移动到节点处。

    对于新增和删除操作addremove,LinedList比较占优势,只需要对指针进行修改即可,而ArrayList要移动数据来填补被删除的对象的空间。

        ArrayListLinkedList都是集合类,用于存储一系列的对象引用(references)。例如我们可以用ArrayList来存储一系列的String或者Integer。