MyArrayList
MyArrayList将保持基础数组,数组的容量,以及存储在MyArrayList中的当前项数。
MyArrayList将提供一种机制以改变基础数组的容量。通过获得一个新数组,将老数组拷贝到新数组中来改变数组的容量,允许虚拟机回收老数组。
MyArrayList将提供get和set的实现。
MyArrayList将提供基本的例程,如size、isEmpty和clear。还提供remove,以及两种不同版本的add。如果数组的大小和容量相同,那么这两个add例程将增加容量。
MyArrayList将提供一个实现Iterator接口的类。这个类将存储迭代序列中的下一项的下表,并提供next、hasNext和remove等方法的实现。
1 | public class MyArrayList<AnyType> implements Iterable<AnyType> |
MyLinkedList
MyLinkedList类,包含两端的链、表的大小以及一些方法。
Node类,一个节点包含数据以及到前一个节点的链和到下一个节点的链,还有一些适当的构造方法。
LinkedListIterator类,该类抽象了位置的概念,并实现接口Iterator。它提供了方法next、hasNext和remove的实现
使用额外的头节点和尾节点的优点在于,通过排除许多特殊情形极大地简化了编码。例如,如果我不使用头节点,那么删除第1个节点就变成了一种特殊的情况,因为在删除期间我们必须重新调整链表到第1个节点的链。
1 | public class MyLinkedList<AnyType> implements Iterable<AnyType> |