ption
异常。UnsupportedOperationException 类继承了RuntimeException
类。这使得调用者能够调用所有的集合操作而不需要把每次调用都放在一个try-catch对里。
List线性表
List接口继承了Collection接口并定义了一个允许相同元素存在的有序集合。List接口还附加了一些使用一个数值型索引值并基于元素在线性表中的位置来操作Collection中元素的方法。这些操作包括add,get,set和remove。
List接口还提供了listIterator方法。这个方法返回java.util.ListIterator
接口的一个实例,这个实例能够让你从头至尾或者从尾至头的遍历一个线性表。java.util.ListIterator
继承了java.util.Iterator
接口。因此,它支持对它代表的Collection中的元素的添加和修改。
下面的例子演示了如何从后向前遍历一个列表的元素。要完成这个工作,必须在遍历开始之前把ListIterator定位于列表最后一个元素之后。
ListIterator iter = aList.listIterator(aList.size());
while (iter.hASPrevious())
System.out.println(iter.previous().toString());
}
集合架构提供了对List接口的两个实现:LinkedList(链表)和ArrayList(数组列表,即静态列表)。这两个实现都支持对其元素的随机访问。一个ArrayList实例支持数组风格的操作并支持数组大小的改变操作。一个LinkedList的实例则提供了在列表开始和结尾添加,删除和提供元素的显式的支持。使用这些新方法,一个程序员可以简单的把一个LinedList当做堆栈或者队列使用,如下:
LinkedList aQueue = new LinkedList(aCollection);
aQueue.addFirst(newElement);
Object anElement = aQueue.removeLast();
LinkedList aStack = new LinkedList(aCollection);
aStack.addFirst(newElement);
Object anElement= aStack.removeFirst();
表A中的代码片段使用java.util.ArrayList 和
java.util.LinkedList演示了对java.util.List接口的实现实例的一些常用的操作。这些操作包括添加元素,随机访问元素和显式的在列表尾删除元素。
知其然不知其所以然是大有好处的
ADT提供了一个将对象公共接口中的操作和其具体的实现分开的强有力的工具。这使得一个ADT的实现可以不断变化和演化同时保持其公共接口不变。Java集合架构提供了大量的接口和其实现用来代表基本元素的集合并可以用来创建有用的ADT。
在我们的下一篇文章中,我们将更深入的学习集合架构来表示更多的类,而且我们还会讨论集合架构的查找和排序功能。