1. 程式人生 > >java.util.ListIterator學習筆記

java.util.ListIterator學習筆記

概述

繼承結構

java.util.Iterator<E> << java.util.ListIterator

基本特性

列表迭代器並不持有當前元素的引用,其持有的遊標是位於列表連個元素之間。可以通過呼叫next()或者previous()返回列表中的元素。一個擁有n個元素的列表擁有n+1個遊標位置,示意圖如下:

這裡寫圖片描述

注意:removeset(Object)方法並不是以迭代器的遊標為準,而是以最後一次呼叫迭代器的next()或者previous()方法的返回的元素為準。

基礎方法

boolean hasNext();

當在迭代器正向遍歷仍有可訪問的有效元素時,則返回true

,換句話說,如果呼叫next()方法可以返回一個有效元素時,則會返回true,否則返回false

E next();

返回迭代器正向訪問時的下一個元素,並將迭代器遊標進行自增操作。我們可以通過迴圈呼叫這個方法達到遍歷列表中的目的。同時,我們也可以呼叫previous()方法來逆向遍歷列表。當我們交替呼叫next()previous()時,迭代器將返回相同的元素。

boolean hasPrevious();

當迭代器逆向遍歷仍有可以訪問的有效元素時,則返回true。也就是說,當呼叫方法previous()仍然可以返回一個有效元素時,則返回true

E previous();

返回逆向遍歷列表的下一個元素,並將迭代器的遊標進行自減操作。

int nextIndex();

返回下一次呼叫next()時返回的元素的下標。當列表迭代器到達列表末尾時,則會回列表長度。

int previousIndex();

返回下一次掉呼叫previous()時返回的元素的下標。當列表迭代器到達列表頭部時,則返回-1。

void remove();

刪除最後一次呼叫next()或者previous()返回的元素。呼叫該方法有兩個注意點:

  1. 每次呼叫next()previous()後,僅能呼叫一次本方法;
  2. 呼叫本方法前,不可呼叫add(E)方法;
void
set(E e);

替換最後一次呼叫next()或者previous()返回的元素。在呼叫本方法前,不可呼叫add(E)remove()方法。

void add(E e);

在列表中插入一個新元素。如果next()可以訪問有效元素,則將元素插入到呼叫next()方法返回的元素之前。即:如果previous()可以訪問有效元素,則將元素插入到呼叫previous()方法返回的元素之後。當列表為空時,則插入的元素為列表中唯一的元素。新元素的插入位置為當前迭代器指定的遊標之前,即:插入元素後,呼叫next()返回元素不受影響,而呼叫previous()函式,則會返回剛剛插入的新元素。呼叫這個方法後,會使呼叫nextIndex()previousIndex()的結構都增大1。插入元素前後的示意圖如下:

這裡寫圖片描述

這裡寫圖片描述

相關推薦

java.util.ListIterator學習筆記

概述 繼承結構 java.util.Iterator<E> << java.util.ListIterator 基本特性 列表迭代器並不持有當前元素的引用,其持有的遊標是位於列表連個元素之間。可以通過呼叫nex

java.util.Set學習筆記

概述 Set的概念與其在數學上的意義相同,是一種不允許存在重複元素的特殊集合,即:在一個Set中不包含滿足條件e1.equals(e2)的元素對e1和e2。Set介面在從Collection中繼承的介面的基礎上,增加了額外的限制條件,主要包括的方法為:構造

java.util.LinkedList學習筆記

概述 繼承結構 類描述 如繼承結構所示,LinkedList是兩個介面(List和Deque)的混合實現。其實現了List介面中所有的可選操作,並且LinkedList允許所有元素(包括null)的插入和訪問操作。LinkedLis

java.util.AbstractCollection學習筆記

前言 由今天開始,正式開始學習java.util包中的collection介面,及其相關類,並在該部落格賬號中進行更新,儘量每天一更,如果在部落格中存在錯誤,歡迎各位在留言區進行指證,相互交流,共同進步。 今天將從基本的AbstractCollection類

java.util.Optional學習筆記

###三種Optional構造方法### 第一種. Optional.of(Object object):入參object不能為空,否則會丟擲空指標異常,檢視Optional原始碼發現會呼叫Objects.requireNonNull方法,裡面有判空: public static <T> T r

深入理解Java虛擬機- 學習筆記 - 虛擬機類加載機制

支持 pub eth 獲取 事件 必須 string 沒有 字節碼 虛擬機把描述類的數據從Class文件加載道內存,並對數據進行校驗,轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這就是虛擬機的類加載機制。在Java裏,類型的加載、連接和初始化過程都是在程序

Java核心技術學習筆記-繼承

java 繼承按照我們中文通俗的理解是不需要付出努力,就獲得別人的能力或資產,比如繼承父輩的家產,繼承父輩的表達能力,繼承父輩的外貌等等。在類裏面的繼承,可以理解不需要重新開發代碼,就能復用父類的方法和域。 在繼承關系裏面,可以分為父類和子類,子類繼承父類,那子類就有了跟父類一樣對外的方法

java System類學習筆記

lis per += start spa getprop ext static puts java 中 System 類 最常見到 System.out.println(); System類 定義為 public final class System extends Obj

學在前面——《瘋狂JAVA講義》學習筆記

要求 能夠 java對象 數據 頁面 hiberna spring 桌面 消失   一直放棄JAVA,覺得身為前端掌握html、css、js就可以勝任工作了,但是最近組裏後臺太忙了,有時候感覺只要在後臺改一點東西就能滿足前臺所需要的數據了,但是自己卻不會改,後臺還木有空,於

Java 設計模式學習筆記1——策略模式(Duck例子)

利用 實例化 top 而是 實現 學習筆記 left ng- 多個 0、假設現有工程(Duck)中遇到為類添加功能的問題,如何設計類添加新的功能? 1、利用繼承提供的Duck(鴨子)的行為會導致哪些缺點? (1)代碼在多個子類中重復 (2)很多男知道所有鴨子的全部行為

java 新特性學習筆記

sets arp string get pen option ring true read java 1.7 Files.write(path,list,StandardCharsets.UTF_8,StandardOpenOption.APPEND); St

Java集合框架學習筆記

引用 dex set集合 第一次 5.4 sof oid code over 本文為學習筆記,學習課程為慕課網Java入門第三季中的集合框架部分,若需要研究文中的代碼,可前往下載。http://www.imooc.com/learn/110 1. List(Collec

Java設計模式學習筆記,三:建造者模式

() stat sys pri builder 統一 return tengine str 建造者模式:實現了構建和裝配的解耦,即對象的各個子組件單獨構建,再進行裝配,從而建造完整對象。 該模式適用於構建較為復雜的對象(多個子組件)。 不同的構建者,使用相同的裝配者,可以建

Java語言基礎學習筆記(七)

day tez lec mdk abd err .com mar mdm 烈7A茨諳9m繁5暗MChttp://www.zcool.com.cn/collection/ZMTg3NzE1Njg=.html 3馗iC蓖17握WM啦http://www.zcool.com.cn

Java註冊登陸學習筆記

java註冊登陸學習筆記import java.util.Scanner;//用戶類class Users{String username;String password;public Users(String username,String password) {this.username = userna

java集合類學習筆記之LinkList

prev strong 內部數據 ins 屬性 aced 裏的 row return 1、簡述     LinkList的底層其實就是一個雙向鏈表,所謂的鏈表就是一個LinkList內部靜態靜態類(Node),對LinkList的所有操作本質上就是通過對LinkList中新

java集合類學習筆記之LinkedHashMap

super 增長 remove sta extend red for normal 順序 1、簡述     LinkedHashMap是HashMap的子類,他們最大的不同是,HashMap內部維護的是一個單向的鏈表數組,而LinkedHashMap內部維護的是一個雙向的鏈

Java使用Redis學習筆記

users 添加 進行 ember ali redis服務器 [] 排序 ktr 如果我們使用Java操作Redis, 需要確保已經安裝了 redis 服務及 Java redis 驅動。 Maven項目可以直接在pom.xml中加入jedis包驅動: &

java集合的學習筆記

搜狗 tac 查詢 功能 ash 應該 情況下 內容 方式 不知不覺也到了java集合這一章的學習,這因該是挺重要的一個章節,因為所有的程序都離不開數據,而一個良好的數據結構和算法應該是程序的靈魂吧。 今天對自己所初步了解的做一個總結: 數據結構是計算機存儲、組織數據的方式

Thinking in Java 第二章學習筆記

包含 的確 隨著 c++ 一個 變化 new 寄存器 我們   Java雖基於C++,但相比之下,Java是一種更加純粹的面向對象程序設計語言。   在Java的世界裏,幾乎一切都是對象,而Java中的全部工作則是定義類,產生那些類的對象,以及發送消息給這些對象。   盡管