java.util.ListIterator學習筆記
概述
繼承結構
java.util.Iterator<E> << java.util.ListIterator
基本特性
列表迭代器並不持有當前元素的引用,其持有的遊標是位於列表連個元素之間。可以通過呼叫next()
或者previous()
返回列表中的元素。一個擁有n
個元素的列表擁有n+1
個遊標位置,示意圖如下:
注意:remove
和 set(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()
返回的元素。呼叫該方法有兩個注意點:
- 每次呼叫
next()
或previous()
後,僅能呼叫一次本方法; - 呼叫本方法前,不可呼叫
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中的全部工作則是定義類,產生那些類的對象,以及發送消息給這些對象。 盡管