首頁  >  文章  >  Java  >  Java中ListIterator與Iterator詳解與辨析

Java中ListIterator與Iterator詳解與辨析

高洛峰
高洛峰原創
2016-12-13 17:20:451261瀏覽

在使用java集合的時候,都需要使用Iterator。但java集合中還有一個迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的時候可以使用。這兩種迭代器有什麼差別呢?下面我們詳細分析。這裡有一點需要明確的時候,迭代器指向的位置是元素之前的位置,如下圖所示:

Java中ListIterator與Iterator詳解與辨析

這裡假設集合List由四個元素List1、List2、List3和List4組成,當使用語句Iterator it = List.Iterator()時,迭代器it指向的位置是上圖中Iterator1指向的位置,當執行語句it.next()之後,迭代器指向的位置後移到上圖Iterator2所指向的位置。

首先看一下Iterator和ListIterator迭代器的方法有哪些。

Iterator迭代器包含的方法有:

hasNext():如果迭代器指向位置後面還有元素,則回傳true,否則傳回false

next():傳回集合中Iterator指向位置後面的元素

remove():刪除集合中Iterator指向位置後面的元素

ListIterator迭代器包含的方法有:

add(E e): 將指定的元素插入列表,插入位置為迭代器當前位置之前

hasNext( ):以正向遍歷列表時,如果列表迭代器後面還有元素,則傳回true,否則傳回false

hasPrevious():如果以逆向遍歷列表,列表迭代器前面還有元素,則傳回true,否則傳回false

next():傳回清單中ListIterator指向位置後面的元素

nextIndex():傳回清單中ListIterator所需位置後面元素的索引

previous():傳回清單中ListIterator指向位置前面元素的索引

previous():傳回清單中ListIterator指向位置前面的元素

previous():傳回清單中的元素。

previousIndex():傳回列表中ListIterator所需位置前面元素的索引

remove():從列表中刪除next()或previous()傳回的最後一個元素(有點拗口,意思是對迭代器使用hasNext( )方法時,刪除ListIterator指向位置後面的元素;當對迭代器使用hasPrevious()方法時,刪除ListIterator指向位置前面的元素)

set(E e):從列表中將next()或previous()傳回的最後一個元素傳回的最後一個元素變更為指定元素e

一.相同點

都是迭代器,當需要對集合中元素進行遍歷不需要干涉其遍歷過程時,這兩種迭代器都可以使用。

二.不同點

1.使用範圍不同,Iterator可以應用於所有的集合,Set、List和Map和這些集合的子類型。而ListIterator只能用於List及其子類型。

2.ListIterator有add方法,可以向List新增對象,而Iterator不能。

3.ListIterator和Iterator都有hasNext()和next()方法,可以實現順序向後遍歷,但是ListIterator有hasPrevious()和previous()方法,可以實現逆向(順序向前)遍歷。 Iterator不可以。

4.ListIterator可以定位目前索引的位置,nextIndex()和previousIndex()可以實現。 Iterator沒有此功能。

5.都可實現刪除操作,但是ListIterator可以實現物件的修改,set()方法可以實現。 Iterator僅能遍歷,不能修改。

三:Iterator和ListIterator用法範例

ListIterator用法:


package com.collection;

import java.util.LinkedList;

import java.util.ListS.

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn