跳转到内容

ArrayList

来自维基教科书,开放的书籍,开放的世界

浏览 聚合 主题: v  d  e )

ArrayList 类扩展了 AbstractList 并实现了 List 接口。ArrayList 支持动态数组,可以根据需要增长。

标准 Java 数组具有固定长度。创建数组后,它们无法增长或缩小,这意味着您必须事先知道数组将容纳多少个元素。

数组列表以初始大小创建。当超过此大小时,集合将自动扩大。当删除对象时,数组可能会缩小。

初始化

[编辑 | 编辑源代码]

ArrayList 类支持三个构造函数。第一个构造函数构建一个空的数组列表。

ArrayList( )

以下构造函数构建一个用集合 c 中的元素初始化的数组列表。

ArrayList(Collection c)

以下构造函数构建一个具有指定初始容量的数组列表。容量是用于存储元素的底层数组的大小。

当元素添加到数组列表时,容量会自动增长。

 ArrayList(int capacity)

ArrayList 定义了以下方法

在 ArrayList 中添加元素

[编辑 | 编辑源代码]
  • 在列表中指定位置插入指定元素。该位置的现有元素及其下面的所有元素都会被移位(这与具有相同参数的 set 方法不同)。如果指定的索引超出范围(index < 0 || index >= size()),则抛出 IndexOutOfBoundsException
void add(int index, Object element)
  • 将指定元素追加到此列表的末尾。
boolean add(Object o)
  • 将指定集合中的所有元素追加到此列表的末尾,按指定集合的迭代器返回的顺序。如果指定的集合为 null,则抛出 NullPointerException
boolean addAll(Collection c)
  • 从指定位置开始,将指定集合中的所有元素插入到此列表中。如果指定的集合为 null,则抛出 NullPointerException
boolean addAll(int index, Collection c)

ArrayList 的大小

[编辑 | 编辑源代码]
  • 返回此列表中的元素数量。
int size()

添加元素和 ArrayList 的大小

 
import java.util.*;

public class ArrayListDemo{
	public static void main(String[] args) {
		// create an array list
		ArrayList <String> al= new ArrayList <String>();
		System.out.println("Initial ArrayList : "+al);
		
		 // add elements to the array list
		al.add("A");
		al.add("B");
		
		//find size of ArrayList
		System.out.println("Size of al :"+al.size());
		// display the array list
		System.out.println("Contents of al :"+al);
		al.add(1,"C");
		System.out.println("Contents of al :"+al);
		System.out.println("Size of al :"+al.size());
	}
}

添加元素和 ArrayList 大小的输出

Computer code
Initial ArrayList : []
Size of al :2
Contents of al :[A, B]
Contents of al :[A, C, B]
Size of al :3

获取和设置 ArrayList 元素

[编辑 | 编辑源代码]
  • 返回此列表中指定位置的元素。如果指定的索引超出范围(index < 0 或 index >= size()),则抛出 IndexOutOfBoundsException
Object get(int index)
  • 用指定元素替换此列表中指定位置的元素。如果指定的索引超出范围(index < 0 或 index >= size()),则抛出 IndexOutOfBoundsException
Object set(int index, Object element)

查找 ArrayList 元素的索引

[编辑 | 编辑源代码]
  • 返回此列表中指定元素的第一次出现的索引,如果列表不包含此元素,则返回 -1。
int indexOf(Object o)
  • 返回此列表中指定元素的最后一次出现的索引,如果列表不包含此元素,则返回 -1。
int lastIndexOf(Object o)

查找 ArrayList 中包含的元素

[编辑 | 编辑源代码]
  • 如果此列表包含指定元素,则返回 true。更正式地说,当且仅当此列表包含至少一个元素 e 使得 (o==null ? e==null : o.equals(e)) 时,返回 true。
boolean contains(Object o)

ArrayList 中的不同方法

 
public class ArrayListDemo {
	public static void main(String[] args) {
		// create an array list
		ArrayList al = new ArrayList();

		// add elements to the array list
		al.add("A");
		al.add("B");
		al.add("C");
		al.add("A");
		al.add("D");
		al.add("A");
		al.add("E");
		System.out.println("Contents of al : " + al);

		// find index of element in ArrayList
		System.out.println("Index of D : " + al.indexOf("D"));
		System.out.println("Index of A : " + al.indexOf("A"));

		// find index of element in ArrayList
		System.out.println("Index of A : " + al.lastIndexOf("A"));

		// get element at given Index
		System.out.println("Element at Second Index : " + al.get(2));
		System.out.println("Element at Sixth Index : " + al.get(6));
		
		//set element at given Index
		al.set(3,"B"); // replacing third index element by "B"
		System.out.println("Contents of al : " + al);
		
		//check ArrayList contains given element
		System.out.println("ArrayList contain D : "+al.contains("D"));
		System.out.println("ArrayList contain F : "+al.contains("F"));
	}
}

ArrayList 中不同方法的输出

Computer code
Contents of al : [A, B, C, A, D, A, E]
Index of D : 4
Index of A : 0
Index of A : 5
Element at Second Index : C
Element at Sixth Index : E
Contents of al : [A, B, C, B, D, A, E]
ArrayList contain D : true
ArrayList contain F : false
测试你的知识

问题: 考虑以下代码

Computer code
public class ArrayListDemo {
		public static void main(String[] args) {
	
		ArrayList al = new ArrayList();

		al.add("A");
		al.add("B");
		al.add("C");
		al.add("E");
		al.add("F");
	
		al.remove(2);
		al.remove("F");
		
		al.set(1, "G");
		al.add("H");
		al.set(3, "I");
		System.out.println("Size of al : " + al.size());
		System.out.println("Contents of al : " + al);

	}
  }


在上面的示例中,输出是什么?

答案
Computer code
Size of al : 4
Contents of al : [A, G, E, I]

更多 ArrayList 方法

方法 描述
Object clone() 返回此 ArrayList 的浅拷贝。
Object[] toArray() 返回一个包含此列表中所有元素的数组,按正确顺序排列。如果指定的数组为 null,则抛出 NullPointerException
void trimToSize() 将此 ArrayList 实例的容量修剪为列表的当前大小。
void ensureCapacity(int minCapacity) 如果需要,增加此 ArrayList 实例的容量,以确保它至少可以容纳最小容量参数指定的元素数量。
protected void removeRange(int fromIndex, int toIndex) 从此列表中删除所有索引在 fromIndex(含)和 toIndex(不含)之间的元素。
华夏公益教科书