15.2.2 List接口
List接口扩展了Collection并声明存储一系列元素的类集的特性。使用一个基于零的下标,元素可以通过它们在列表中的位置被插入和访问。一个列表可以包含复制元素。除了由Collection定义的方法之外,List还定义了一些它自己的方法,这些方法总结在表15-2中。再次注意当类集不能被修改时,其中的几种方法引发UnsupportedOperationException异常。当一个对象与另一个不兼容,例如当企图将一个不兼容的对象加入一个类集中时,将产生ClassCastException异常。
表15-2 由List 定义的方法
方法 描述
void add(int index, Object obj) 将obj插入调用列表,插入位置的下标由index传递。任何已存在的,在插入点以及插入点之后的元素将前移。因此,没有元素被覆盖boolean addAll(int index, Collection c) 将c中的所有元素插入到调用列表中,插入点的下标由index传递。在插入点以及插入点之后的元素将前移。因此,没有元素被覆盖。如果调用列表改变了,则返回true;否则返回false
Object get(int index) 返回存储在调用类集内指定下标处的对象
int indexOf(Object obj) 返回调用列表中obj的第一个实例的下标。如果obj不是列表中的元素,则返回-1
int lastIndexOf(Object obj) 返回调用列表中obj的最后一个实例的下标。如果obj不是列表中的元素,则返回-1
ListIterator listIterator( ) 返回调用列表开始的迭代程序
ListIterator listIterator(int index) 返回调用列表在指定下标处开始的迭代程序
Object remove(int index) 删除调用列表中index位置的元素并返回删除的元素。删除后,列表被压缩。也就是说,被删除元素后面的元素的下标减一
Object set(int index, Object obj) 用obj对调用列表内由index指定的位置进行赋值
List subList(int start, int end) 返回一个列表,该列表包括了调用列表中从start到end–1的元素。返回列表中的元素也被调用对象引用
对于由Collection定义的add( ) 和addAll( )方法,List增加了方法add(int, Object) 和addAll(int, Collection)。这些方法在指定的下标处插入元素。由Collection定义的add(Object)和addAll(Collection)的语义也被List改变了,以便它们在列表的尾部增加元素。为了获得在指定位置存储的对象,可以用对象的下标调用get( )方法。为了给类表中的一个元素赋值,可以调用set( )方法,指定被改变的对象的下标。调用indexOf( )或lastIndexOf( )可以得到一个对象的下标。通过调用subList( )方法,可以获得列表的一个指定了开始下标和结束下标的子列表。正如你能想象到的,subList( )方法使得列表处理十分方便。
15.2.3 集合接口
集合接口定义了一个集合。它扩展了Collection并说明了不允许复制元素的类集的特性。因此,如果试图将复制元素加到集合中时,add( )方法将返回false。它本身并没有定义任何附加的方法。
15.2.4 SortedSet接口
SortedSet接口扩展了Set并说明了按升序排列的集合的特性。除了那些由Set定义的方法之外,由SortedSet接口说明的方法列在表15-3中。当没有项包含在调用集合中时,其中的几种方法引发NoSuchElementException异常。当对象与调用集合中的元素不兼容时,引发ClassCastException 异常。如果试图使用null 对象, 而集合不允许null 时, 引发NullPointerException异常。