- E pop() 从此列表表示的堆栈中弹出一个元素
测试代码:
public class LinkedListTest {
public static void main(String[] args) {
LinkedList list = new LinkedList();
// boolean add(E e) 将指定的元素追加到此列表的末尾。
list.add(“aaa”);
list.add(“ddd”);
list.add(“ccc”);
list.add(“111”);
list.add(“aaa”);
list.add(“eee”);
// int size() 返回此列表中的元素数
System.out.println(list.size()); // 6
System.out.println(list); // [aaa, ddd, ccc, 111, aaa, eee]
// E get(int index) 返回此列表中指定位置的元素。
System.out.println(list.get(0)); // aaa
System.out.println(list.get(list.size() - 1)); // eee
System.out.println(“*****************************”);
// E remove(int index) 删除该列表中指定位置的元素
System.out.println(list.remove(3)); // 111
System.out.println(“*****************************”);
// void addFirst(E e) 在该列表开头插入指定的元素
list.addFirst(“111”);
System.out.println(list); // [111, aaa, ddd, ccc, aaa, eee]
// void addLast(E e) 将指定的元素追加到此列表的末尾。
list.addLast(“666”);
System.out.println(list); // [111, aaa, ddd, ccc, aaa, eee, 666]
// E getFirst() 返回此列表中的第一个元素
System.out.println(list.getFirst()); // 111
// E getLast() 返回此列表中的最后一个元素。
System.out.println(list.getLast()); // 666
System.out.println(“*****************************”);
// void push(E e) 将元素推送到由此列表表示的堆栈上
list.push(“888”);
System.out.println(list); // [888, 111, aaa, ddd, ccc, aaa, eee, 666]
// E pop() 从此列表表示的堆栈中弹出一个元素
String pop = list.pop();
System.out.println(pop); // 888
System.out.println(“****************************”);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println(“****************************”);
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
测试结果:
6
[aaa, ddd, ccc, 111, aaa, eee]
aaa
eee
111
[111, aaa, ddd, ccc, aaa, eee]
[111, aaa, ddd, ccc, aaa, eee, 666]
111
666
[888, 111, aaa, ddd, ccc, aaa, eee, 666]
888
111
aaa
ddd
ccc
aaa
eee
666
111
aaa
ddd
ccc
aaa
eee
666
1. ArrayList 的底层源码
public class ArrayList extends AbstractList
implements List, RandomAccess, Cloneable, java.io.Serializable
ArrayList 是从JDK1.2 引入的。
它是可调整大小的数组,实现了List接口。 实现所有可选列表操作,并允许所有元素包括null 。 除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。 (这个类是大致相当于Vector,不同之处在于它是不同步的)。
内部封装一个数组,用数组来存储数据。内部数组的默认初始容量 10,存满后 1.5 倍增长
从 JDK1.8开始, ArrayList 一开始创建一个长度为 0 的数组,当添加第一个元素时再创建一个始容量为 10 的 数组。
2. ArrayList 的构造方法
- ArrayList() 构造一个初始容量为十的空列表。
- ArrayList(Collection<? extends E> c) 构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
- ArrayList(int initialCapacity) 构造具有指定初始容量的空列表。
3. ArrayList 的常用方法
ArrayList 的方法和 LinkedList 相同,但它没有两端操作数据的方法
- boolean add(E e) 将指定的元素追加到此列表的末尾
- int size() 返回此列表中的元素个数
- E get(int index) 返回此列表中指定位置的元素
- E remove(int index) 删除该列表中指定位置的元素
- boolean remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)
- boolean contains(Object o) 如果此列表包含指定的元素,则返回 true
- boolean addAll(int index, Collection<? extends E> c) 将指定集合中的所有元素插入到此列表中,从指定的位置开始
\- void clear() 从列表中删除所有元素
- for / iterator 集合遍历
测试代码:
public class ArrayListTest {
public static void main(String[] args) {
ArrayList list = new ArrayList();
// boolean add(E e) 将指定的元素追加到此列表的末尾
list.add(111);
list.add(666);
list.add(333);
list.add(888);
list.add(111);
list.add(999);
// int size() 返回此列表中的元素个数
System.out.println(list.size()); // 6
System.out.println(list); // [111, 666, 333, 888, 111, 999]
// E get(int index) 返回此列表中指定位置的元素
System.out.println(list.get(3)); // 888
// E remove(int index) 删除该列表中指定位置的元素。
list.remove(3);
System.out.println(list); // [111, 666, 333, 111, 999]
// boolean remove(Object o) 从列表中删除指定元素的第一个出现(如果存在)
System.out.println(list.remove(Integer.valueOf(111))); // true
System.out.println(list); // [666, 333, 111, 999]
System.out.println(“******************************”);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
// 用三种方式遍历集合
System.out.println(“******************************”);
Iterator it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println(“******************************”);
for (Integer integer : list) {