最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用迭代器Iterator遍歷Collection問(wèn)題

 更新時(shí)間:2023年11月01日 15:23:15   作者:鼠鼠我呀2  
這篇文章主要介紹了使用迭代器Iterator遍歷Collection問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用迭代器Iterator遍歷Collection

實(shí)現(xiàn)LRU算法時(shí),發(fā)現(xiàn)使用java的LinkedHashMap時(shí)如果刪除隊(duì)頭元素(最長(zhǎng)時(shí)間未訪問(wèn)的元素),需要

coll.remove(coll.keySet().iterator().next());

因?yàn)镸ap中元素?zé)o序,根據(jù)key的hashCode()排序,而LinkedHashMap雖然有序,但是無(wú)法獲取隊(duì)頭和隊(duì)尾元素,所以只能采用迭代器模式。

java.utils包下定義的迭代器接口:Iterator。

Iterator對(duì)象稱為迭代器(設(shè)計(jì)模式的一種),主要用于遍歷 Collection 集合中的元素。

GOF給迭代器模式的定義為:提供一種方法訪問(wèn)一個(gè)容器(container)對(duì)象中各個(gè)元素,而又不需暴露該對(duì)象的內(nèi)部細(xì)節(jié)。迭代器模式,就是為容器而生。

作用:遍歷集合Collectiton元素

如何獲取實(shí)例:coll.iterator()返回一個(gè)迭代器實(shí)例

遍歷的代碼實(shí)現(xiàn)

Iterator iterator = coll.iterator();
//hasNext():判斷是否還下一個(gè)元素
while(iterator.hasNext()){
    //next():①指針下移 ②將下移以后集合位置上的元素返回
    System.out.println(iterator.next());
}

圖示說(shuō)明


 

獲取LinkedHashMap中的頭部元素(最早添加的元素):

  • 時(shí)間復(fù)雜度O(1)
int headNode=map.keySet().iterator().next();

獲取LinkedHashMap中的末尾元素(最近添加的元素):

  • 時(shí)間復(fù)雜度O(n)
	LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>();
        map.put(2, 2);
        map.put(1, 1);
        Iterator<Integer> iterator = map.keySet().iterator();
        int tail = 0;
        while (iterator.hasNext()) {
            tail = iterator.next();
        }
        System.out.println(tail);//1
	

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 學(xué)習(xí)Java多線程之線程定義、狀態(tài)和屬性

    學(xué)習(xí)Java多線程之線程定義、狀態(tài)和屬性

    這篇文章主要為大家詳細(xì)介紹了Java多線程之線程定義、狀態(tài)和屬性,感興趣的小伙伴們可以參考一下
    2016-02-02
  • java必學(xué)必會(huì)之線程(1)

    java必學(xué)必會(huì)之線程(1)

    java必學(xué)必會(huì)之線程第一篇,介紹了線程的基本概念、線程的創(chuàng)建和啟動(dòng),想要學(xué)好java線程的朋友一定要好好閱讀這篇文章
    2015-12-12
  • Freemarker 最簡(jiǎn)單的例子程序

    Freemarker 最簡(jiǎn)單的例子程序

    Freemarker最簡(jiǎn)單的例子程序是通過(guò)String來(lái)創(chuàng)建模版對(duì)象,并執(zhí)行插值處理。
    2016-04-04
  • Java中創(chuàng)建線程的四種方式的最佳實(shí)踐

    Java中創(chuàng)建線程的四種方式的最佳實(shí)踐

    這篇文章主要為大家詳細(xì)介紹了Java中創(chuàng)建線程的四種方式的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-08-08
  • 詳解Spring-Boot中如何使用多線程處理任務(wù)

    詳解Spring-Boot中如何使用多線程處理任務(wù)

    本篇文章主要介紹了詳解Spring-Boot中如何使用多線程處理任務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Spring?Boot實(shí)現(xiàn)web.xml功能示例詳解

    Spring?Boot實(shí)現(xiàn)web.xml功能示例詳解

    這篇文章主要介紹了Spring?Boot實(shí)現(xiàn)web.xml功能,通過(guò)本文介紹我們了解到,在Spring Boot應(yīng)用中,我們可以通過(guò)注解和編程兩種方式實(shí)現(xiàn)web.xml的功能,包括如何創(chuàng)建及注冊(cè)Servlet、Filter以及Listener等,需要的朋友可以參考下
    2023-09-09
  • MyBatis?Generator使用小結(jié)

    MyBatis?Generator使用小結(jié)

    本文主要介紹了MyBatis?Generator使用小結(jié),它能夠根據(jù)數(shù)據(jù)庫(kù)表,自動(dòng)生成java實(shí)體類、dao層接口及mapper.xml文件,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法

    Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java權(quán)重隨機(jī)的實(shí)現(xiàn)方法,實(shí)例分析了權(quán)重隨機(jī)算法的原理與完整實(shí)現(xiàn)方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • 如何利用Jackson序列化忽略指定類型的屬性詳解

    如何利用Jackson序列化忽略指定類型的屬性詳解

    這篇文章主要給大家介紹了關(guān)于如何利用Jackson序列化忽略指定類型的屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Java三目運(yùn)算符的實(shí)戰(zhàn)案例

    Java三目運(yùn)算符的實(shí)戰(zhàn)案例

    三目運(yùn)算符在java中運(yùn)用可以說(shuō)非常的廣泛,下面這篇文章主要給大家介紹了關(guān)于Java三目運(yùn)算符的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評(píng)論

敦化市| 甘孜县| 娄烦县| 化隆| 上杭县| 德江县| 普格县| 雅安市| 民丰县| 会东县| 阿荣旗| 罗江县| 芦溪县| 星座| 青神县| 马关县| 孟津县| 旌德县| 论坛| 马关县| 秀山| 会理县| 陆川县| 古浪县| 包头市| 都昌县| 绍兴市| 盐城市| 瓦房店市| 长垣县| 衡阳县| 云和县| 依兰县| 汽车| 西城区| 武胜县| 通化县| 西和县| 长宁县| 兴和县| 华宁县|