Iterator 和 ListIterator 的不同點以及包含的方法


當我們在對集合(List,Set)進行操作的時候,為了實現對集合中的數據進行遍歷,經常使用到了Iterator(迭代器)。使用迭代器,你不需要干涉其遍歷的過程,只需要每次取出一個你想要的數據進行處理就可以了。但是在使用的時候也是有不同的,List和Set都有iterator()來取得其迭代器。對List來說,你也可以通過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指向位置前面的元素

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

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

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

Iterator 和 ListIterator 的不同點

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使用案例

 1 import java.util.ArrayList;
 2 import java.util.Iterator;
 3 import java.util.List;
 4 
 5 public class IteratorDemo {
 6 
 7     public static void main(String[] args) {
 8 
 9         List<String> list=  new ArrayList<String>() ;    //         
10         list.add("hello") ;        
11         list.add("_") ;        
12         list.add("world") ;        
13         Iterator<String> iter = list.iterator() ;    // 得到list集合迭代器
14                 
15         while(iter.hasNext()){    // 判斷是否有元素            
16             String str = iter.next() ;            
17             if("_".equals(str)){                
18                 iter.remove() ;    // 刪除元素                    
19                 }else{                
20                     System.out.println(str) ;    // 輸出內容            
21                     }        
22             }        
23         System.out.println("刪除之后的集合:" + list) ;    
24     }
25 
26 }

ListIterator實現雙向輸出

在實現雙向輸出的時候一定要注意一點:一定要先進行由前向后輸出,之后才能進行由后向前的輸出

同時使用ListIterator還可以進行增加以及替換元素。
 1 import java.util.ArrayList;
 2 import java.util.List;
 3 import java.util.ListIterator;
 4 
 5 public class ListIteratorDemo {
 6 
 7     public static void main(String[] args) {
 8 
 9         List<String> list = new ArrayList<String>() ;    
10         list.add("hello") ;        
11         list.add("-") ;        
12         list.add("jie") ;        
13         ListIterator<String> iter = list.listIterator() ;        
14         System.out.print("由前向后輸出:") ;        
15         while(iter.hasNext()){            
16             String str = iter.next() ;            
17             System.out.print(str + " ") ;        
18             iter.set("YOU - " + str) ;    // 修改內容        
19             }        
20             System.out.print("\n由后向前輸出:") ;        
21             iter.add("JIE");        
22             while(iter.hasPrevious()){            
23                 String str = iter.previous() ;            
24                 System.out.print(str + " ") ;        
25                 }    
26             }
27         }
28     

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM