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

使用迭代器Iterator遍歷Collection問題

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

使用迭代器Iterator遍歷Collection

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

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

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

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

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

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

作用:遍歷集合Collectiton元素

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

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

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

圖示說明


 

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

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

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

  • 時間復(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é)

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

相關(guān)文章

  • Idea實現(xiàn)接口的方法上無法添加@Override注解的解決方案

    Idea實現(xiàn)接口的方法上無法添加@Override注解的解決方案

    文章介紹了在IDEA中實現(xiàn)接口方法時無法添加@Override注解的問題及其解決方法,主要步驟包括更改項目結(jié)構(gòu)中的Language level到支持該注解的版本,以及在pom.xml文件中指定maven-compiler-plugin的版本以解決自動更新后的問題
    2025-02-02
  • Java8中Stream的一些神操作

    Java8中Stream的一些神操作

    Stream是Java8中處理集合的關(guān)鍵抽象概念,它可以指定你希望對集合進(jìn)行的操作,可以執(zhí)行非常復(fù)雜的查找、過濾和映射數(shù)據(jù)等操作,這篇文章主要給大家介紹了Java8中Stream的一些神操作,需要的朋友可以參考下
    2021-11-11
  • Spring Cloud Nacos配置修改不生效的解決方法詳解

    Spring Cloud Nacos配置修改不生效的解決方法詳解

    Nacos作為一個動態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺,廣泛應(yīng)用于Java Spring Cloud項目中,然而,有時在修改Nacos配置后,這些更改并不會立即生效,下面我們來看看這樣如何解決吧
    2025-01-01
  • 10個經(jīng)典的Java main方法面試題

    10個經(jīng)典的Java main方法面試題

    這篇文章主要為大家分享了10個經(jīng)典的Java main方法面試題,與其說是Java面試題,其實也是Java的一些最基礎(chǔ)知識問題,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Java線程安全之volatile詳解

    Java線程安全之volatile詳解

    這篇文章主要介紹了Java線程安全之volatile詳解,volatile 的存在,解決了不同內(nèi)存間拷貝的同步問題,在每一次使用或者修改時候,都去原持有內(nèi)存中去拿最新的狀態(tài),需要的朋友可以參考下
    2023-08-08
  • java設(shè)計模式之組合模式(Composite)

    java設(shè)計模式之組合模式(Composite)

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計模式之組合模式Composite,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java中獲取文件大小的詳解及實例代碼

    Java中獲取文件大小的詳解及實例代碼

    這篇文章主要介紹了Java中獲取文件大小的詳解及實例代碼的相關(guān)資料,一種是使用File的length()方法,另外一種是使用FileInputStream的available()方法,這里就說下如何使用需要的朋友可以參考下
    2016-12-12
  • Spring Cloud Feign內(nèi)部實現(xiàn)代碼細(xì)節(jié)

    Spring Cloud Feign內(nèi)部實現(xiàn)代碼細(xì)節(jié)

    Feign 的英文表意為“假裝,偽裝,變形”, 是一個http請求調(diào)用的輕量級框架,可以以Java接口注解的方式調(diào)用Http請求,而不用像Java中通過封裝HTTP請求報文的方式直接調(diào)用。接下來通過本文給大家分享Spring Cloud Feign內(nèi)部實現(xiàn)代碼細(xì)節(jié),感興趣的朋友一起看看吧
    2021-05-05
  • RabbitMQ中的Channel和Exchange詳解

    RabbitMQ中的Channel和Exchange詳解

    這篇文章主要介紹了RabbitMQ中的Channel和Exchange詳解,創(chuàng)建和銷毀TCP連接很耗時,打開太多TCP連接,耗操作系統(tǒng)資源,并發(fā)量大到一定程度,系統(tǒng)的吞吐量會降低,使用一個connection多channel的方式,可以提升連接的利用率,需要的朋友可以參考下
    2023-08-08
  • 使用logback實現(xiàn)日志打印過濾

    使用logback實現(xiàn)日志打印過濾

    這篇文章主要介紹了使用logback實現(xiàn)日志打印過濾的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論