什么是ArrayList
ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小。要注意的是ArrayList并不是线程安全的,因此一般建议在单线程中使用ArrayList。
构造方法
ArrayList提供了三种方式的构造器
-
ArrayList()
构造一个初始容量为10的空列表 -
ArrayList(Collection<? extends E> c)
按照集合的迭代器返回的顺序构造一个包含指定集合元素的列表 -
ArrayList(int initialCapacity)
构造具有指定初始容量的空列表
存储数据
ArryList提供了五种存储数据的方法
- set(int index, E element)
- add(E e)
- add(int index, E element)
- addAll(Collection<? extends E> c)
- addAll(int index, Collection<?extends E> c)
set(int index, E element)
用指定的元素替换此列表中指定位置的元素
add(E e)
将指定的元素附加到此列表的末尾
add(int index, E element)
将指定元素插入此列表中的指定位置
addAll(Collection<? extends E> c)
将指定集合中的所有元素按指定集合的Iterator返回的顺序附加到此列表的末尾
addAll(int index, Collection<?extends E> c)
将指定集合中的所有元素插入此列表,从指定的位置开始
读取
get(int index)
返回指定位置的元素
删除
remove(int index)
删除此列表中指定位置的元素
remove(Object o)
如果存在,则从该列表中删除指定元素的第一次出现
removeAll(Collection<?> c)
从此列表中删除指定集合中包含的所有元素
clear()
从列表中删除所有元素
调整数组容量
上面讲到ArrayList中存储元素的时候,都会坚持添加的元素是否超出当前长度,并且初始化数组长度,以满足添加数据的需求.
数组扩容通过一个公开的方法public void ensureCapacity(int minCapacity)
来实现.在实际添加大量元素前,可以使用该方法手动增加ArrayList实例的容量,以减少递增式再分配的数量.
ensureCapacity(int minCapacity)
如有必要,增加此ArrayList实例的容量,以确保它至少可以容纳由minimum capacity参数指定的元素数
ArrayList的使用
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class ArrayListLean {
public static void main(String[] args) {
//使用ArrayList
ArrayList<String> arrayList = new ArrayList<>();
//添加元素
arrayList.add("小红");
arrayList.add("小明");
arrayList.add("小兰");
arrayList.add("小光");
System.out.println(arrayList);
//将元素添加到指定的位置上
arrayList.add(2, "小霞");
System.out.println(arrayList);
//判断元素是否在ArayList中
boolean contain = arrayList.contains("小霞");
System.out.println(contain);
//通过角标获取元素
String string = arrayList.get(2);
System.out.println(string);
//通过元素获取角标
int index = arrayList.indexOf("小霞");
System.out.println(index);
//通过角标设置元素
arrayList.set(1, "小赵");
System.out.println(arrayList);
//通过角标移除元素,并返回移除的元素
String rmString = arrayList.remove(1);
System.out.println(rmString);
//ArrayList集合的遍历
for(int i=0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(i));
}
//使用迭代器进行遍历
Iterator<String> iterator = arrayList.iterator();
while(iterator.hasNext()) {
String str = iterator.next();
System.out.println(str);
}
//使用迭代器ListIterator可以从后往前遍历
ListIterator<String> listIterator = arrayList.listIterator();
while(listIterator.hasNext()) {
String str = listIterator.next();
System.out.println(str);
}
while(listIterator.hasPrevious()) {
String str = listIterator.previous();
System.out.println(str);
}
//ArrayList嵌套
ArrayList<ArrayList<String>> house = new ArrayList<>();
ArrayList<String> hos1 = new ArrayList<String>();
hos1.add("tom");
hos1.add("Jerry");
hos1.add("Hack");
house.add(hos1);
ArrayList<String> hos2 = new ArrayList<>();
hos2.add("Mi");
hos2.add("We");
hos2.add("TIm");
hos2.add("QQ");
house.add(hos2);
ArrayList<String> hos3 = new ArrayList<>();
hos3.add("Yello");
hos3.add("Red");
hos3.add("Blue");
hos3.add("Black");
house.add(hos3);
//ArrayList嵌套的遍历
Iterator<ArrayList<String>> iterator = house.iterator();
while(iterator.hasNext()) {
ArrayList<String> arrList = iterator.next();
Iterator<String> it = arrList.iterator();
while(it.hasNext()) {
String str = it.next();
System.out.println(str);
}
}
}
}
详细内容请查看官方文档
网友评论