一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于java構造方法Vector遍歷元素源碼分析

基于java構造方法Vector遍歷元素源碼分析

2021-12-25 17:06叫我王員外就行 Java教程

本篇文章是關于ava構造方法Vector源碼分析系列文章,本文主要介紹了Vector遍歷元素的源碼分析,有需要的朋友可以借鑒參考下,希望可以有所幫助

(注意:本文基于JDK1.8)

前言

任何一個容器類對象用于持有元素后,總是需要遍歷元素的,即挨個去訪問每個元素1次,而遍歷元素,除了常規的依賴于數組對象的下標之外,更常用的是封裝好的迭代器,今天就來學習Vector中的迭代器是如何設計的,與迭代器相關的方法有:

iterator()

listIterator()

listIterator(int index)

3個Vector中的定義的方法,均會返回一個迭代器對象……簡單說說這3個方法的來歷

iterator()方法的來歷

iterator()方法,是Vector實現的Iterable接口規范的方法,如何你直觀的去看Vector的類結構,你并找不到Iterable接口的定義,你看到的應該是這樣的:

?
1
2
3
4
5
6
public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
      …………省略代碼…………
}

那么Iterable接口在哪里呢?沒錯,就在List接口中,List接口繼承了Collection接口,而Collection接口則又繼承了Iterable接口,因為Vector實現了List接口,所以間接獲得iterator()方法的實現需求。

List接口表示具備線性表的能力、Collection接口表示具備集合的能力,而Iterable接口則表示具備可遍歷的能力

List擴展了Collection的能力,而Collection又擴展了Iterable的能力,List的能力最大,且也符合這樣的規范,既然作為線性表,當然應該具備Collection中的定義的能力,而既然作為集合,應該具備可遍歷元素的能力。

 listIterator()與listIterator(int)方法的來歷

這兩個方法,則來源于Vector的父類AbstractList中的定義,只不過Vector均對其進行了重寫,而AbstractList則是根據自己實現的List接口,而實現的這兩個方法。話不多少,接下來看看

iterator()方法分析

?
1
2
3
public synchronized Iterator<E> iterator() {
    return new Itr();
}

用于返回一個迭代器對象的方法,synchronized修飾,只有獲取到對象的鎖的線程才能執行該方法

1、創建Itr對象

Itr是定義在Vector中的普通內部類,它產生的對象用于表示迭代器,也稱為迭代器對象

2、向調用者返回迭代器對象

listIterator()方法分析

?
1
2
3
public synchronized ListIterator<E> listIterator() {
    return new ListItr(0);
}

用于返回一個迭代器對象的方法,此迭代器用于從第一個元素開始遍歷

1、創建ListItr對象

ListItr也為Vecor中的定義的一個普通內部類,它的構造方法可以傳入的一個參數,表示起始下標(從哪個元素開始)

2、向調用者返回ListItr對象

listIterator(int)方法分析

?
1
2
3
4
5
public synchronized ListIterator<E> listIterator(int index) {
    if (index < 0 || index > elementCount)
        throw new IndexOutOfBoundsException("Index: "+index);
    return new ListItr(index);
}

用于返回一個迭代器對象,傳入的參數表示此迭代器可以從哪個元素開始

1、檢查傳入的下標是否合理

當傳入下標小于0、或者傳入的下標大于elementCount(即表示元素總數、又表示即將添加新元素的下標),則證明不合理,此處會拋出IndexOutOfBoundsException()對象

2、創建ListItr對象

利用傳入的下標,將其傳入到ListItr的構造方法中,創建一個指定從某個下標處開始的迭代器對象

3、返回迭代器對象ListItr

總結

迭代器操作,全部依賴Itr類、以及ListItr類產生的對象,真真的迭代器對象就是它們,所以下一篇將直接分析,Itr類與ListItr類的所有方法

以上就是基于java構造方法Vector遍歷元素源碼分析的詳細內容,更多關于java構造方法Vector的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/cadi2011/article/details/116809430

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 91国产在线播放 | 精品一久久香蕉国产线看观 | 四虎国产免费 | 天天天天天干 | 精品国产三级av在线 | 2012手机在线中文字幕 | 俄罗斯美女大逼 | 小小水蜜桃3视频在线观看 小鸟酱喷水 | 99r在线播放 | 美女视频ww8888网网 | 午夜久| 99热在线这里只有精品 | 精品国产三级av在线 | 亚洲va精品中文字幕 | 暖暖日本高清 | 8x8x丝袜美女 | 欧美日韩国产一区二区三区在线观看 | 色狠狠婷婷97 | 四虎私人影院 | 5x社区在线观看直接进入 | 第一次破女视频国产一级 | 好爽好粗 | 成人福利视频网址 | 5g影院天天 | 香蕉tv国产在线永久播放 | 色婷婷影院在线视频免费播放 | 亚洲人成网站在线观看90影院 | 久久九九亚洲精品 | 国产图片综合区 | japonensis日本护士 | 亚洲欧美精品一区二区 | 国产欧美一区二区三区精品 | 欧美视频久久 | 人人九九 | 日本捏胸吃奶视频免费 | 日韩欧美一区黑人vs日本人 | 四虎精品成人a在线观看 | 欧美同志video 在线观看 | 经典三级四虎在线观看 | 色综合久久六月婷婷中文字幕 | 亚洲色图第四页 |