激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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
主站蜘蛛池模板: 在线免费小视频 | 久久久久久久久久久久久久av | 久欧美 | 免费在线一区二区 | 免费观看一区二区三区 | 国产一区二区成人在线 | 视频一区二区在线观看 | 一级做a爰性色毛片免费1 | av成人在线观看 | 日韩在线播放中文字幕 | 男人天堂新地址 | 国产日本在线播放 | 精品一区二区久久久久 | 天天躁狠狠躁夜躁2020挡不住 | 欧洲黄视频| 久成人| 中国黄色一级生活片 | 亚洲影院在线播放 | 蜜桃视频在线免费观看 | 国产精品久久久久久久av | 中国洗澡偷拍在线播放 | 中文字幕亚洲一区二区三区 | 主播粉嫩国产在线精品 | 欧美日韩国产成人在线观看 | 久久成人在线观看 | 日本a级免费 | 国产人成精品一区二区三 | av在线浏览| 国产真实孩交 | 免费久久久 | 99精品视频在线免费观看 | h视频免费在线 | 草莓视频久久 | 久久国产精品久久精品国产演员表 | 久久精品99久久久久久2456 | h色网站免费观看 | 欧美精品久久久久久久久老牛影院 | 久久99久久99免费视频 | 看免费5xxaaa毛片 | 欧美一级理论 | 毛片午夜 |