欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于java構(gòu)造方法Vector遍歷元素源碼分析

 更新時(shí)間:2021年09月09日 17:31:53   作者:叫我王員外就行  
本篇文章是關(guān)于ava構(gòu)造方法Vector源碼分析系列文章,本文主要介紹了Vector遍歷元素的源碼分析,有需要的朋友可以借鑒參考下,希望可以有所幫助

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

前言

任何一個(gè)容器類(lèi)對(duì)象用于持有元素后,總是需要遍歷元素的,即挨個(gè)去訪問(wèn)每個(gè)元素1次,而遍歷元素,除了常規(guī)的依賴(lài)于數(shù)組對(duì)象的下標(biāo)之外,更常用的是封裝好的迭代器,今天就來(lái)學(xué)習(xí)Vector中的迭代器是如何設(shè)計(jì)的,與迭代器相關(guān)的方法有:

iterator()

listIterator()

listIterator(int index)

3個(gè)Vector中的定義的方法,均會(huì)返回一個(gè)迭代器對(duì)象……簡(jiǎn)單說(shuō)說(shuō)這3個(gè)方法的來(lái)歷

iterator()方法的來(lái)歷

iterator()方法,是Vector實(shí)現(xiàn)的Iterable接口規(guī)范的方法,如何你直觀的去看Vector的類(lèi)結(jié)構(gòu),你并找不到Iterable接口的定義,你看到的應(yīng)該是這樣的:

public class Vector<E>
    extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
{
      …………省略代碼…………
}

那么Iterable接口在哪里呢?沒(méi)錯(cuò),就在List接口中,List接口繼承了Collection接口,而Collection接口則又繼承了Iterable接口,因?yàn)閂ector實(shí)現(xiàn)了List接口,所以間接獲得iterator()方法的實(shí)現(xiàn)需求。

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

List擴(kuò)展了Collection的能力,而Collection又?jǐn)U展了Iterable的能力,List的能力最大,且也符合這樣的規(guī)范,既然作為線(xiàn)性表,當(dāng)然應(yīng)該具備Collection中的定義的能力,而既然作為集合,應(yīng)該具備可遍歷元素的能力。

 listIterator()與listIterator(int)方法的來(lái)歷

這兩個(gè)方法,則來(lái)源于Vector的父類(lèi)AbstractList中的定義,只不過(guò)Vector均對(duì)其進(jìn)行了重寫(xiě),而AbstractList則是根據(jù)自己實(shí)現(xiàn)的List接口,而實(shí)現(xiàn)的這兩個(gè)方法。話(huà)不多少,接下來(lái)看看

iterator()方法分析

    public synchronized Iterator<E> iterator() {
        return new Itr();
    }

用于返回一個(gè)迭代器對(duì)象的方法,synchronized修飾,只有獲取到對(duì)象的鎖的線(xiàn)程才能執(zhí)行該方法

1、創(chuàng)建Itr對(duì)象

Itr是定義在Vector中的普通內(nèi)部類(lèi),它產(chǎn)生的對(duì)象用于表示迭代器,也稱(chēng)為迭代器對(duì)象

2、向調(diào)用者返回迭代器對(duì)象

listIterator()方法分析

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

用于返回一個(gè)迭代器對(duì)象的方法,此迭代器用于從第一個(gè)元素開(kāi)始遍歷

1、創(chuàng)建ListItr對(duì)象

ListItr也為Vecor中的定義的一個(gè)普通內(nèi)部類(lèi),它的構(gòu)造方法可以傳入的一個(gè)參數(shù),表示起始下標(biāo)(從哪個(gè)元素開(kāi)始)

2、向調(diào)用者返回ListItr對(duì)象

listIterator(int)方法分析

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

用于返回一個(gè)迭代器對(duì)象,傳入的參數(shù)表示此迭代器可以從哪個(gè)元素開(kāi)始

1、檢查傳入的下標(biāo)是否合理

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

2、創(chuàng)建ListItr對(duì)象

利用傳入的下標(biāo),將其傳入到ListItr的構(gòu)造方法中,創(chuàng)建一個(gè)指定從某個(gè)下標(biāo)處開(kāi)始的迭代器對(duì)象

3、返回迭代器對(duì)象ListItr

總結(jié)

迭代器操作,全部依賴(lài)Itr類(lèi)、以及ListItr類(lèi)產(chǎn)生的對(duì)象,真真的迭代器對(duì)象就是它們,所以下一篇將直接分析,Itr類(lèi)與ListItr類(lèi)的所有方法

以上就是基于java構(gòu)造方法Vector遍歷元素源碼分析的詳細(xì)內(nèi)容,更多關(guān)于java構(gòu)造方法Vector的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot使用Micrometer實(shí)現(xiàn)度量和監(jiān)控

    SpringBoot使用Micrometer實(shí)現(xiàn)度量和監(jiān)控

    在構(gòu)建和維護(hù)現(xiàn)代應(yīng)用程序時(shí),度量和監(jiān)控是至關(guān)重要的,它們可以幫助您了解應(yīng)用程序的性能、穩(wěn)定性和可用性,本文將介紹如何在Spring Boot應(yīng)用程序中使用Micrometer進(jìn)行度量和監(jiān)控,需要的朋友可以參考下
    2023-10-10
  • springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開(kāi)發(fā)框架,本文主要介紹了springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Spring中HandlerMethod類(lèi)源碼詳細(xì)解析

    Spring中HandlerMethod類(lèi)源碼詳細(xì)解析

    這篇文章主要介紹了Spring中HandlerMethod類(lèi)源碼詳細(xì)解析,HandlerMethod類(lèi)用于封裝控制器方法信息,包含類(lèi)信息、方法Method對(duì)象、參數(shù)、注解等信息,具體的接口請(qǐng)求是可以根據(jù)封裝的信息調(diào)用具體的方法來(lái)執(zhí)行業(yè)務(wù)邏輯,需要的朋友可以參考下
    2023-11-11
  • 使用Spring MVC實(shí)現(xiàn)雙向數(shù)據(jù)綁定

    使用Spring MVC實(shí)現(xiàn)雙向數(shù)據(jù)綁定

    Spring MVC是一個(gè)廣泛用于構(gòu)建Java Web應(yīng)用程序的框架,它提供了眾多功能,包括雙向數(shù)據(jù)綁定,在這篇文章中,我們將向Java新手介紹如何使用Spring MVC實(shí)現(xiàn)雙向數(shù)據(jù)綁定,以及為什么這個(gè)特性如此重要,需要的朋友可以參考下
    2024-01-01
  • Java如何將任意類(lèi)型的Object對(duì)象轉(zhuǎn)換為相應(yīng)的實(shí)體對(duì)象

    Java如何將任意類(lèi)型的Object對(duì)象轉(zhuǎn)換為相應(yīng)的實(shí)體對(duì)象

    這篇文章主要介紹了Java如何將任意類(lèi)型的Object對(duì)象轉(zhuǎn)換為相應(yīng)的實(shí)體對(duì)象問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Spring實(shí)戰(zhàn)之讓Bean獲取Spring容器操作示例

    Spring實(shí)戰(zhàn)之讓Bean獲取Spring容器操作示例

    這篇文章主要介紹了Spring實(shí)戰(zhàn)之讓Bean獲取Spring容器操作,結(jié)合實(shí)例形式分析了Bean獲取Spring容器的相關(guān)原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • Java開(kāi)發(fā)崗位面試被問(wèn)到嵌套類(lèi)怎么辦

    Java開(kāi)發(fā)崗位面試被問(wèn)到嵌套類(lèi)怎么辦

    本篇文章主要介紹了深入理解Java嵌套類(lèi)和內(nèi)部類(lèi),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-07-07
  • java實(shí)現(xiàn)背單詞程序

    java實(shí)現(xiàn)背單詞程序

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)背單詞程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • HashMap在JDK7與JDK8中的實(shí)現(xiàn)過(guò)程解析

    HashMap在JDK7與JDK8中的實(shí)現(xiàn)過(guò)程解析

    這幾天學(xué)習(xí)了HashMap的底層實(shí)現(xiàn),但是發(fā)現(xiàn)好幾個(gè)版本的,代碼不一,很多文章都是舊版本JDK1.6.JDK1.7的?,F(xiàn)在我來(lái)分析下JDK7與JDK8中HashMap的實(shí)現(xiàn)過(guò)程
    2021-09-09
  • Gson之toJson和fromJson方法的具體使用

    Gson之toJson和fromJson方法的具體使用

    Gson是Google的一個(gè)開(kāi)源項(xiàng)目,可以將Java對(duì)象轉(zhuǎn)換成JSON,也可能將JSON轉(zhuǎn)換成Java對(duì)象。本文就詳細(xì)的介紹了toJson和fromJson方法的具體使用,感興趣的可以了解一下
    2021-11-11

最新評(píng)論