List接口继承了Collection接口,位于java.util包中。它包含Collection接口的所有方法,外加其他一些方法(具体实现参考源码),比较重要的有:
- anyType get(int index)
- anyType set(int index, anyType newVal)
- void add(int index, anyType x)
- void remove(int index)
- ListIterator<anyType> listIterator(int pos)
List ADT有两种流行的实现方式:ArrayList类和LinkedList类
- ArrayList类提供了一种可增长数组的实现方式。使用ArrayList的优点在于,对于get和set的调用花费常数时间。其缺点在于新项的插入和现有项的删除代价昂贵,除非在ArrayList的末端实现。
- LinkedList提供了一种双链表实现。使用LinkedList的优点在于,新项的插入和现有项的删除。这意味着,在表的前端进行添加和现有项的删除都花费常数时间,由此LinkedList提供了addFirst、removeFirst等方法。LinkedList的缺点是不容易作索引,因此对get的调用很昂贵,除非调用接近表的端点。