国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LinkedHashMap部分底層源碼解析

這篇具有很好參考價(jià)值的文章主要介紹了LinkedHashMap部分底層源碼解析。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

JDK版本為1.8.0_271,LinkedHashMap繼承了HashMap,LinkedHashMap在HashMap的基礎(chǔ)上維護(hù)了一個(gè)雙向鏈表,實(shí)現(xiàn)了可以根據(jù)插入順序/訪問順序(accessOrder=false/true)訪問Map集合。
關(guān)于HashMap的原理可以參考HashMap部分底層源碼解析
部分屬性:

    /**
     * 雙向鏈表頭節(jié)點(diǎn)
     */
    transient LinkedHashMap.Entry<K,V> head;

    /**
     * 雙向鏈表尾節(jié)點(diǎn)
     */
    transient LinkedHashMap.Entry<K,V> tail;

    /**
     * 默認(rèn)為accessOrder=false,表示按照插入順序迭代
     * accessOrder=true,表示按照訪問順序迭代
     */
    final boolean accessOrder;

內(nèi)部定義的Entry如下:

static class Entry<K,V> extends HashMap.Node<K,V> {
	Entry<K,V> before, after;	// Node節(jié)點(diǎn)的前后指針
	Entry(int hash, K key, V value, Node<K,V> next) {
		super(hash, key, value, next);
	}
}

LinkedHashMap重寫了HashMap中的newNode()方法:

Node<K,V> newNode(int hash, K key, V value, Node<K,V> e) {    
    LinkedHashMap.Entry<K,V> p =        new LinkedHashMap.Entry<K,V>(hash, key, value, e);    
    // 新增的鍵值對p也要尾插法掛到雙向鏈表  
    linkNodeLast(p);    
    return p;
}
TreeNode<K,V> newTreeNode(int hash, K key, V value, Node<K,V> next) {
    TreeNode<K,V> p = new TreeNode<K,V>(hash, key, value, next);
    linkNodeLast(p);  // 新增的鍵值對p也要尾插法掛到雙向鏈表  
    return p;
}

// 鍵值對p要尾插法掛到雙向鏈表
private void linkNodeLast(LinkedHashMap.Entry<K,V> p) {
    LinkedHashMap.Entry<K,V> last = tail;
    tail = p;
    // 尾插法掛載節(jié)點(diǎn)到雙向鏈表
    if (last == null)
        head = p;
    else {
        p.before = last;
        last.after = p;
    }
}
8.4.2 圖示

LinkedHashMap部分底層源碼解析,JavaSE,java文章來源地址http://www.zghlxwxcb.cn/news/detail-849562.html

到了這里,關(guān)于LinkedHashMap部分底層源碼解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringMVC底層原理源碼解析

    SpringMVC底層原理源碼解析

    SpringMVC的作用毋庸置疑,雖然我們現(xiàn)在都是用SpringBoot,但是SpringBoot中仍然是在使用SpringMVC來處理請求。 我們在使用SpringMVC時(shí),傳統(tǒng)的方式是通過定義web.xml,比如: 我們只要定義這樣的一個(gè)web.xml,然后啟動Tomcat,那么我們就能正常使用SpringMVC了。 SpringMVC中,最為核心的就是

    2024年02月05日
    瀏覽(20)
  • 【Spring】Spring之事務(wù)底層源碼解析

    能使用spring事務(wù)解決開發(fā)需求 了解spring事務(wù)是如何被spring管理的 了解spring事務(wù)底層原理實(shí)現(xiàn),比如代理、事務(wù)傳播機(jī)制等 配置數(shù)據(jù)源及事務(wù)管理器: 業(yè)務(wù)邏輯代碼: 調(diào)用: 結(jié)果: 如上,就是Spring中事務(wù)的簡單應(yīng)用,接下來分析Spring事務(wù)的實(shí)現(xiàn)原理。 開啟Spring事務(wù)本質(zhì)上

    2024年02月14日
    瀏覽(26)
  • 【Spring】Spring之AOP底層源碼解析

    【Spring】Spring之AOP底層源碼解析

    理解Spring中AOP的實(shí)現(xiàn)原理 Spring中有關(guān)AOP功能的使用 什么是動態(tài)代理: 為 其他對象 提供一種 代理 以控制對這個(gè)對象的訪問,增強(qiáng)一個(gè)類中的某個(gè)方法,對程序進(jìn)行擴(kuò)展。 如下一個(gè)service類,如果想不改變test方法代碼的情況下,增加特定的邏輯,該怎么做呢? 此時(shí)就可以用

    2024年02月14日
    瀏覽(25)
  • Spring源碼(二)Spring底層架構(gòu)核心概念解析

    BeanDefinition表示 Bean定義 ,BeanDefinition中存在很多屬性用來描述一個(gè)Bean的特點(diǎn)。比如: class,表示Bean類型 scope,表示Bean作用域,單例或原型等 lazyInit:表示Bean是否是懶加載 initMethodName:表示Bean初始化時(shí)要執(zhí)行的方法 destroyMethodName:表示Bean銷毀時(shí)要執(zhí)行的方法 在Spring中,我

    2024年02月15日
    瀏覽(29)
  • HashMap底層源碼解析及紅黑樹分析

    HashMap底層源碼解析及紅黑樹分析

    HashMap線程不安全,底層數(shù)組+鏈表+紅黑樹 面試重點(diǎn)是put方法,擴(kuò)容 HashMap的put方法,首先通過key去生成一個(gè)hash值,第一次進(jìn)來是null,此時(shí)初始化大小為16,i = (n - 1) hash計(jì)算下標(biāo)值,第一次獲取是null,直接放入一個(gè)Node節(jié)點(diǎn),如果不是null,分成下面三種情況 1)如果發(fā)現(xiàn)hash和

    2024年02月02日
    瀏覽(17)
  • java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層

    java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層

    對于數(shù)據(jù)結(jié)構(gòu)我這邊只告訴你右邊框框里的 棧的特點(diǎn):后進(jìn)先出,先進(jìn)后出,入棧也成為壓棧,出棧也成為彈棧 棧就像一個(gè)彈夾 隊(duì)列先進(jìn)先出后進(jìn)后出 隊(duì)列像排隊(duì) 鏈表查詢滿 但是增刪快(相對于數(shù)組而言) 拓展:還有一個(gè)雙向鏈表 他在查詢元素的時(shí)候更快些,因?yàn)樗谀玫揭粋€(gè)元素

    2024年02月05日
    瀏覽(25)
  • rabbitmq | rabbitTemplate的convertAndSend部分源碼解析

    在RabbitMQ中,事務(wù)是一種確保消息發(fā)送的可靠性的機(jī)制。Spring AMQP提供了對RabbitMQ事務(wù)的抽象,而 RabbitTemplate 作為Spring AMQP的核心組件,提供了許多簡化消息發(fā)送的方法。在這篇博客中,我們將深入探討RabbitMQ事務(wù)機(jī)制的源碼實(shí)現(xiàn),以及Spring封裝的 RabbitTemplate 的使用。 RabbitMQ的

    2024年01月19日
    瀏覽(16)
  • 【JavaSE】Java基礎(chǔ)語法(三十七):Java 中的 String 類(源碼級別)

    【JavaSE】Java基礎(chǔ)語法(三十七):Java 中的 String 類(源碼級別)

    String 表示 字符串類型,屬于 引用數(shù)據(jù)類型 。Java 中 String 是 不可變 的。 在 Java 當(dāng)中 雙引號 括起來的字符串,是直接存儲在“方法區(qū)”的“字符串常量池”當(dāng)中的。 源碼: 源碼: 源碼: 源碼: 源碼: 源碼: 源碼: 源碼: https://blog.csdn.net/qq_44715943/article/details/116308837

    2024年02月06日
    瀏覽(34)
  • 【JavaSE專欄48】Java集合類ArrayList解析,這個(gè)動態(tài)數(shù)組數(shù)據(jù)結(jié)構(gòu)你了解嗎?

    【JavaSE專欄48】Java集合類ArrayList解析,這個(gè)動態(tài)數(shù)組數(shù)據(jù)結(jié)構(gòu)你了解嗎?

    作者主頁 :Designer 小鄭 作者簡介 :3年JAVA全棧開發(fā)經(jīng)驗(yàn),專注JAVA技術(shù)、系統(tǒng)定制、遠(yuǎn)程指導(dǎo),致力于企業(yè)數(shù)字化轉(zhuǎn)型,CSDN學(xué)院、藍(lán)橋云課認(rèn)證講師。 主打方向 :Vue、SpringBoot、微信小程序 本文講解了 Java 中集合類 ArrayList 的語法、使用說明和應(yīng)用場景,并給出了樣例代碼。

    2024年02月16日
    瀏覽(27)
  • 【JavaSE專欄51】Java集合類HashSet解析,基于哈希表無序非重元素集合

    【JavaSE專欄51】Java集合類HashSet解析,基于哈希表無序非重元素集合

    作者主頁 :Designer 小鄭 作者簡介 :3年JAVA全棧開發(fā)經(jīng)驗(yàn),專注JAVA技術(shù)、系統(tǒng)定制、遠(yuǎn)程指導(dǎo),致力于企業(yè)數(shù)字化轉(zhuǎn)型,CSDN學(xué)院、藍(lán)橋云課認(rèn)證講師。 主打方向 :Vue、SpringBoot、微信小程序 本文講解了 Java 中集合類 HashSet 的語法、使用說明和應(yīng)用場景,并給出了樣例代碼。

    2024年02月16日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包