標籤:str 圖片 迭代 size 相同 nbsp class 指定 引用
列表迭代器並不持有當前元素的引用,其持有的遊標是位於列表連個元素之間。可以通過調用next()
或者previous()
返回列表中的元素。一個擁有n
個元素的列表擁有n+1
個遊標位置,如下:
注意:remove
和 set(Object)
方法並不是以迭代器的遊標為準,而是以最後一次調用迭代器的next()
或者previous()
方法的返回的元素為準。
基礎方法
1.boolean hasNext();
當在迭代器正向遍曆仍有可訪問的有效元素時,則返回true
,換句話說,如果調用next()
方法可以返回一個有效元素時,則會返回true
,否則返回false
。
2.E next();
返回迭代器正向訪問時的下一個元素,並將迭代器遊標進行自增操作。我們可以通過迴圈調用這個方法達到遍曆列表中的目的。同時,我們也可以調用previous()
方法來逆向遍曆列表。當我們交替調用next()
與previous()
時,迭代器將返回相同的元素。
3.boolean hasPrevious();
當迭代器逆向遍曆仍有可以訪問的有效元素時,則返回true
。也就是說,當調用方法previous()
仍然可以返回一個有效元素時,則返回true
。
4.E previous();
返回逆向遍曆列表的下一個元素,並將迭代器的遊標進行自減操作。
5.int nextIndex();
返回下一次調用next()
時返回的元素的下標。當列表迭代器到達列表末尾時,則會回列表長度。
6.int previousIndex();
返回下一次掉調用previous()
時返回的元素的下標。當列表迭代器到達列表頭部時,則返回-1。
7.void remove();
刪除最後一次調用next()
或者previous()
返回的元素。調用該方法有兩個注意點:
- 每次調用
next()
或previous()
後,僅能調用一次本方法;
- 調用本方法前,不可調用
add(E)
方法;
8.void set(E e);
替換最後一次調用next()
或者previous()
返回的元素。在調用本方法前,不可調用add(E)
和remove()
方法。
9.void add(E e);
在列表中插入一個新元素。如果next()
可以訪問有效元素,則將元素插入到調用next()
方法返回的元素之前。即:如果previous()
可以訪問有效元素,則將元素插入到調用previous()
方法返回的元素之後。當列表為空白時,則插入的元素為列表中唯一的元素。新元素的插入位置為當前迭代器指定的遊標之前,即:插入元素後,調用next()
返回元素不受影響,而調用previous()
函數,則會返回剛剛插入的新元素。調用這個方法後,會使調用nextIndex()
或previousIndex()
的結構都增大1。插入元素前後的如下:
java.util.ListIterator