ArrayList类从AbstractList类继承而来, 它实现了List接口。(集合接口由许多类实现,类实现了接口)ArrayList类是一个泛型类,声明为 : class ArrayList<E>, 类型E指定了列表要保存的对象的类型。
ArrayList类实现了动态数组, 可以根据需要增加或减小它的大小。
ArrayList的简单实例。下面演示了ArrayList类,创建了一个存储Character类型对象的数组列表,并向其加入了一些字符。并 进行了一些基本操作。
package com.demo;
import java.util.ArrayList;
public class demo{
public static void main(String[] args) {
ArrayList<Character> a1 = new ArrayList<Character>();
System.out.println("Initial size: "+ a1.size());
a1.add('A');
a1.add('B');
a1.add('C');
a1.add('D');
a1.add('E');
//a1数组大小
System.out.println("Size" + a1.size());
for(int i = 0; i < 3; i++)
a1.add(2, (char)('x'+ i));
System.out.println("Size after additions: " + a1.size());
//Display the array list
System.out.println("Contents: " + a1);
//Delete the element , the index is 1
System.out.println("Delete the index:");
a1.remove(1);
System.out.println(a1);
System.out.println();
System.out.println("After lowercase");
for(int i = 0; i < a1.size(); i++)
//turn to lower case
a1.set(i, Character.toLowerCase(a1.get(i)));
System.out.println(a1.toString());
System.out.println();
//查找值得索引
System.out.println("delete");
int idx = a1.indexOf('d');
if(idx >= 0) a1.remove(idx);
System.out.println(a1);
System.out.println();
System.out.println("UseToString");
String str = a1.toString();
System.out.println(str);
}
}
输出如下:
Initial size: 0
Size5
Size after additions: 8
Contents: [A, B, z, y, x, C, D, E]
Delete the index:
[A, z, y, x, C, D, E]
After lowercase
[a, z, y, x, c, d, e]
delete
[a, z, y, x, c, e]
UseToString
[a, z, y, x, c, e]
演示了add(), remove(), get(), set() 等方法。前面几个内容的显示用的是toString()方法的默认版本显示。最后一个用的是toString()方法。
ArrayList对象的容量会随着其存储的对象自动增加,但是也可以通过调用ensureCapacity()方法手动增加ArrayList对象的容量。如果提前知道
在集合将存储比现在更多的对象,可以调用该方法。通过在开始时一次性增加它的容量,可以避免在后来重复分配。因为重复分配会浪费时间,所以
避免不需要的重复分配会提升性能。ensureCapacity()方法如下所示:
void ensureCapacity(int cap)
如果想减少ArrayList对象的容量,使其匹配当前保存的项的数目,则可以调用trimToSize()方法。 方法形式: void trimToSize()。