深度剖析Java数据结构之表(二)——List接口
一、List接口
在Java中,List接口的定义如下:
从定义来看,List接口除了定义了一些对List的增加,删除,修改等操作外,还有就是里面有一个ListIterator接口,当对象调用listIterator()方法时,就会得到一个ListIterator接口的对象,该接口是干什么呢?
二、ListIterator接口
在Java中,ListIterator接口的定义如下:
从定义可以看出,ListIterator接口是Iterator的扩展。也就是说,实现ListIterator接口的类的对象都可以使用增强for循环进行遍历。我们都知道,hashNext()和next()方法是查找后继元素的时候使用,由此可想而知,ListIterator接口中的hasPrevious()和privious()方法是用来查找前驱元素的。同时,还扩展了一个set()方法。set() 方法传递的参数E的对象,该方法是干什么用的呢?
运行上面的程序,在调用set()方法的时候,抛出IllegalStateException异常。
为什么会抛出IllegalStateException异常呢?IllegalStateException异常是指在不合理或不正确时间内唤醒一方法时出现的异常信息。换句话说,即 Java 环境或 Java 应用不满足请求操作。也就是说,set()方法不是这么使用的。
上面程序的运行结果为:
1
2
3
4
10
10
10
10
从结果可以看出,ListIterator接口中set()方法是将next()方法得到的元素重新赋值,当然,如果是previous()方法得到的元素也可以被赋值。
在List接口中,还有一个方法listIterator(int index)可以得到List的迭代器(ListIterator接口的对象),其中的参数index为迭代的起始位置,其它的同listIterator()方法得到的迭代器一样。