ArrayList
外观
< Java 编程
浏览 聚合 主题: ) |
ArrayList 类扩展了 AbstractList 并实现了 List 接口。ArrayList 支持动态数组,可以根据需要增长。
标准 Java 数组具有固定长度。创建数组后,它们无法增长或缩小,这意味着您必须事先知道数组将容纳多少个元素。
数组列表以初始大小创建。当超过此大小时,集合将自动扩大。当删除对象时,数组可能会缩小。
ArrayList 类支持三个构造函数。第一个构造函数构建一个空的数组列表。
ArrayList( )
以下构造函数构建一个用集合 c 中的元素初始化的数组列表。
ArrayList(Collection c)
以下构造函数构建一个具有指定初始容量的数组列表。容量是用于存储元素的底层数组的大小。
当元素添加到数组列表时,容量会自动增长。
ArrayList(int capacity)
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)
- 返回此列表中的元素数量。
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 大小的输出
Initial ArrayList : [] Size of al :2 Contents of al :[A, B] Contents of al :[A, C, B] Size of al :3 |
- 返回此列表中指定位置的元素。如果指定的索引超出范围(index < 0 或 index >= size()),则抛出
IndexOutOfBoundsException
。
Object get(int index)
- 用指定元素替换此列表中指定位置的元素。如果指定的索引超出范围(index < 0 或 index >= size()),则抛出
IndexOutOfBoundsException
。
Object set(int index, Object element)
- 返回此列表中指定元素的第一次出现的索引,如果列表不包含此元素,则返回 -1。
int indexOf(Object o)
- 返回此列表中指定元素的最后一次出现的索引,如果列表不包含此元素,则返回 -1。
int lastIndexOf(Object o)
- 如果此列表包含指定元素,则返回
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 中不同方法的输出
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 |
测试你的知识
问题: 考虑以下代码
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);
}
}
|
在上面的示例中,输出是什么?
答案
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(不含)之间的元素。 |