java.lang.Object
-java.util.AbstractCollection
- java.util.AbstractList
- java.util.ArrayList
public class ArrayList
extends AbstractList
implements List, RandomAccess, Cloneable, Serializable
ArrayList类(存储对象的类,存储在java.util包中,需要在第一行导入)
ArrayList是泛型类,具有一个泛型类型E,创建一个ArrayList时,可以指定一个具体的类型来替换E
构造方法摘要:
ArrayList() //构造初始容量为10的空列表。
ArrayList(Collection<? extends E> c) //构造包含指定集合的元素的列表,按集合的迭代器返回这些元素的顺序。
ArrayList(int initialCapacity) //构造具有指定初始容量的空列表。
语法:ArrayList list = new ArrayList<>(); //AConcreteType可以是string,那样的话该ArrayList对象就可以存储字符串。
//也可以用于存储日期,ArrayList<java.util.Date> dates = new ArrayList<>();
"<>"中可以不给出具体类型,JDK7开始使用类型推导的特征,编译器从变量的声明中推导出类型。
一旦创建了数组,大小就固定了。ArrayList更灵活,无须提前给定大小
java.util.ArrayList<E>
+ArrayList() //创建一个空列表
+add(e: E): void //增加一个新元素e到列表末尾
+add(index: int, e: E): void //增加一个新元素e到列表的指定下标处
+addAll(Collection<? extends E> c): boolean //按指定集合的迭代器返回元素的顺序,将指定集合中的所有元素追加到此列表的末尾。
+addAll(int index, Collection<? extends E> c): boolean //将指定集合中的所有元素插入到指定位置的列表(可选操作)
+clear(): void //删除列表中所有元素
+clone(): Object //返回此ArrayList实例的浅层副本。
+contains(o: Object): boolean //如果该列表包含指定元素o,返回true
+containsAll(Collection<?> c): boolean //如果此集合包含指定集合中的所有元素,则返回true
+ensureCapacity(int minCapacity): void //必要时增加此ArrayList实例的容量,以确保它至少可以容纳由最小容量参数指定的元素数。
+get(index: int): E //返回该列表指定下标位置的元素
+indexOf(o: Object): int //返回列表中第一个匹配的元素的下标,如果此列表不包含该元素,则返回-1。
+isEmpty(): boolean //如果该列表不包含任何元素,则返回true
+iterator(): Iterator<E> //以正确的顺序返回此列表中元素的迭代器。
+lastIndexOf(o: Object): int //返回列表中最后一个匹配元素的下标,如果此列表不包含该元素,则返回-1。
+remove(o: Object): boolean //去除列表中第一个匹配的元素。如果此列表包含指定元素,则返回true(如果此列表因调用而更改,则返回等效值)。
remove(int index): E //删除此列表中指定位置的元素。将任何后续元素向左移动(从其索引中减去一个)return:从列表中删除的元素
+removeIf(Predicate<? super E> filter): boolean //删除此集合中满足给定谓词的所有元素。
+removeRange(int fromIndex, int toIndex): protected void //从该列表中删除其索引介于fromIndex、inclusive和toIndex、exclusive之间的所有元素。将任何后续元素向左移动(减少它们的索引)。此调用通过(toIndex-fromIndex)元素缩短列表。(如果toIndex==fromIndex,则此操作无效。)
+size(): int //返回列表中元素个数
+set(index: int, e: E): E //用指定的元素替换此列表中指定位置的元素。返回之前指定位置上的元素
+toArray(): Object[] //返回一个数组,该数组按正确顺序(从第一个元素到最后一个元素)包含此列表中的所有元素。
可以像使用数组一样使用ArrayList对象,但是两者还是有很多不同之处,如表:
操作 | 数组 | ArrayList |
---|---|---|
创建数组/数组列表 | String[] a = new String [10] | ArrayList list = new ArrayList() |
访问元素 | a [index] | list.get(index) |
更新元素 | a [index] = “London”; | list.set(index, “London”); |
返回大小 | a.length | list.size() |
添加一个新元素 | list.add(“London”) | |
插入一个新元素 | list.add(index, “London”) | |
删除一个元素 | list.remove(index) / list.remove(Object) | |
删除所有元素 | list.clear() |
数组排序:java.util.Arrays.sort(array)
数组列表排序:java.util.Collections.sort(arrayList)
注意:存储在ArrayList中的元素必须是一种对象。不可使用如int型的基本数据类型来代替一个泛型类型。
可创建一个存储Integer对象的ArrayList:ArrayList listOfIntegers = new ArrayList<>();
- ArrayList的大小是灵活的,所以无须提前给定它的大小。而创建一个数组时,它的大小必须给定
- ArrayList包含许多有用的方法。比如可以使用contains方法来测试某个元素是否在列表中,如果使用数组,则需要额外编写代码来实现
可以和数组增强遍历方法一样,使用foreach循环来进行数组对象遍历:
for (elementType element: arrayList) { }
例如:for (Integer number: list) { }