java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用
Java中ListIterator和Iterator詳解與辨析 在使用java集合的時(shí)候,都需要使用Iterator。但是java集合中還有一個(gè)迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的時(shí)候可以使用。這兩種迭代器有什么區(qū)別呢?下面我們?cè)敿?xì)分析。這里有一點(diǎn)需要明
Java中ListIterator和Iterator的區(qū)別以及ListIterator的應(yīng)用 Iterator和ListIterator主要區(qū)別有: 一、ListIterator有add()方法,可以向List中添加對(duì)象,而Iterator不能。 二、ListIterator和Iterator都有hasNext()和next()方法,可以實(shí)現(xiàn)順序向后遍歷。但是ListIterator有hasPrevious()和previous()方法,可以實(shí)現(xiàn)逆向(順序向前)遍歷。Iterator就不可以。 三、ListIterator可以定位當(dāng)前的索引位置,nextIndex()和previousIndex()可以實(shí)現(xiàn)。Iterator 沒有此功能。 四、都可實(shí)現(xiàn)刪除對(duì)象,但是ListIterator可以實(shí)現(xiàn)對(duì)象的修改,set()方法可以實(shí)現(xiàn)。Iterator僅能遍歷,不能修改。因?yàn)長istIterator的這些功能,可以實(shí)現(xiàn)對(duì)LinkedList等List數(shù)據(jù)結(jié)構(gòu)的操作。
public class TestListIterator {
public static void main(String[] args){
List list = new LinkedList ();
inits(list);
//Iterator迭代器
System.out.println("1、Iterator迭代器的正向遍歷輸出=======================");
Iterator it = list.iterator();
//1、正向輸出
while(it.hasNext()){
System.out.print(it.next()+" ");
}
//1、正向輸出,迭代器只能一次性使用,例如,當(dāng)上面已經(jīng)遍歷輸出一遍之后,下面的遍歷就將沒有任何輸出
//
while(it.hasNext()){
//
System.out.print(it.next()+" ");
//
}
//換行
System.out.println();
System.out.println("=======================");
System.out.println("2、ListIterator迭代器的正向遍歷輸出=======================");
//ListIterator迭代器
ListIterator lIt = list.listIterator();
//此時(shí)在迭代器的最前面添加的,lIt.hasNext還訪問不了
lIt.add("C");
lIt.add("Python");
//2、正向輸出
while(lIt.hasNext()){
System.out.print(lIt.next()+" ");
}
//換行
System.out.println();
System.out.println("3、ListIterator迭代器的反向遍歷輸出=======================");
//3、反相輸出
while(lIt.hasPrevious()){
System.out.print(lIt.previous()+" ");
}
//換行
System.out.println();
System.out.println("4、ListIterator迭代器的修改元素的應(yīng)用=======================");
//4、ListIteraor迭代器可以修改元素
for(;lIt.hasNext();){
String str = lIt.next();
lIt.set(str+"heihei");
}
while(lIt.hasPrevious()){
System.out.print(lIt.previous()+" ");
}
//換行
System.out.println();
System.out.println("5、ListIterator迭代器的nextIndex的應(yīng)用=======================");
//5、測試ListIterator中nextIndex的功能
while(lIt.hasNext()){
int index = lIt.nextIndex();
System.out.println(" "+index);
String str = lIt.next();
if(index == 1){
lIt.set(str+"wuranghao");
}
}
System.out.println("-----------------------");
//輸出
while(lIt.hasPrevious()){
String str = lIt.previous();
System.out.print( str + ",");
}
System.out.println();
}
private static void inits(List list) {
list.add("1、Java");
list.add("2、C++");
list.add("3、C#");
}
} 在實(shí)現(xiàn)ListIterator中的一些特殊方法時(shí),發(fā)現(xiàn)有很多需要我們注意的地方,例如,ListIterator中的add方法,下面將進(jìn)行詳細(xì)的介紹。 1、add方法 在我們獲取到List的ListIterator迭代器后,直接使用add添加元素,添加元素的位置是當(dāng)前next元素的前一個(gè)元素。 看如下的例子:
list.add("Java");
list.add("C++");
list.add("C#");
ListIterator lIt = list.listIterator();
//此時(shí)在迭代器的最前面添加的,lIt.hasNext還訪問不了
lIt.add("C");
lIt.add("Python"); 當(dāng)使用add方法添加元素后,如果使用如下的方法進(jìn)行輸出,結(jié)果為:C Python Java C++ C#
for(int i=0;i
while(lIt.hasNext()){
System.out.print(lIt.next()+" ");
} 從結(jié)果可以看出,此種情況下,next是沒法取得我們剛剛添加進(jìn)行的元素。 JDK文檔對(duì)此方法的說明如下: 將指定的元素插入列表(可選操作)。該元素直接插入到 next 返回的下一個(gè)元素的前面(如果有),或者 previous 返回的下一個(gè)元素之后(如果有);如果列表沒有元素,那么新元素就成為列表中的唯一元素。新元素被插入到隱式光標(biāo)前:不影響對(duì) next 的后續(xù)調(diào)用,并且對(duì) previous 的后續(xù)調(diào)用會(huì)返回此新元素(此調(diào)用把調(diào)用 nextIndex 或 previousIndex 所返回的值增加 1)。 這里就比較好理解了。 還有一些我們需要注意的地方,在使用ListIterator時(shí),這些功能都需要我們進(jìn)行測試,然后進(jìn)行使用。
總結(jié)
以上是生活随笔為你收集整理的java iter是否存在_Java中ListIterator和Iterator的区别以及ListIterator的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同一银行的信用卡额度共享吗
- 下一篇: yum php fpm5.6,CentO