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

詳解Java集合中的基本數(shù)據(jù)結(jié)構(gòu)

 更新時(shí)間:2021年06月04日 11:33:21   作者:Liziba  
總有小伙伴讓我總結(jié)一下Java集合中的基本數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,今天特地整理了本篇文章,文中有非常詳細(xì)的介紹,需要的朋友可以參考下

集合中三大數(shù)據(jù)結(jié)構(gòu)

在這里插入圖片描述

數(shù)組

  • 內(nèi)存地址連續(xù)
  • 可以通過下標(biāo)的成員訪問,下標(biāo)訪問的性能高
  • 增刪操作有較大的性能消耗(需要?jiǎng)討B(tài)擴(kuò)容)

在這里插入圖片描述

鏈表(雙向鏈表)

  • 靈活的空間要求,存儲(chǔ)空間不要求連續(xù)
  • 不支持下標(biāo)訪問,支持順序遍歷搜索
  • 針對增刪操作找到對應(yīng)的節(jié)點(diǎn)改變鏈表的頭尾指針指向即可,無需移動(dòng)元數(shù)據(jù)存儲(chǔ)位置

在這里插入圖片描述

樹(Java中二叉樹特性)

  • 某節(jié)點(diǎn)的左子樹節(jié)點(diǎn)僅包含小于該節(jié)點(diǎn)的值
  • 某節(jié)點(diǎn)的右子樹節(jié)點(diǎn)僅包含大于該節(jié)點(diǎn)的值
  • 節(jié)點(diǎn)必須是二叉樹
  • 順序排列

在這里插入圖片描述

存在問題:樹可以認(rèn)為是介于數(shù)組和鏈表二者之間的一種數(shù)據(jù)結(jié)構(gòu),擁有較快的查詢速度同時(shí)擁有較快的插入和刪除速度。但是在樹出現(xiàn)極端或嚴(yán)重的不平衡情況下會(huì)導(dǎo)致效率低下

在這里插入圖片描述

基于紅黑樹折中解決二叉樹不平衡帶來的效率低下問題

紅黑樹

  • 紅黑樹,Red-Black Tree [RBT]是一個(gè)自平衡(不是絕對平衡)的二叉查找樹(BST),樹上的每個(gè)節(jié)點(diǎn)需要遵循下面的規(guī)則
  • 每個(gè)節(jié)點(diǎn)要么是黑色,要么是紅色
  • 根節(jié)點(diǎn)為黑色
  • 每個(gè)葉子節(jié)點(diǎn)(NIL)是黑色
  • 不能存在兩個(gè)連續(xù)的紅色節(jié)點(diǎn)(紅色節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)必須是黑色)
  • 任一節(jié)點(diǎn)到葉子節(jié)點(diǎn)的路徑包含相同數(shù)量的黑節(jié)點(diǎn)

在這里插入圖片描述

紅黑樹通過什么自平衡

左旋:以某個(gè)節(jié)點(diǎn)作為支點(diǎn)(旋轉(zhuǎn)節(jié)點(diǎn)),其右子節(jié)點(diǎn)變?yōu)樾D(zhuǎn)節(jié)點(diǎn)的父節(jié)點(diǎn),右子節(jié)點(diǎn)的左節(jié)點(diǎn)變?yōu)樾D(zhuǎn)節(jié)點(diǎn)的右子節(jié)點(diǎn),左子節(jié)點(diǎn)保持不變

在這里插入圖片描述

右旋:以某個(gè)節(jié)點(diǎn)作為支點(diǎn)(旋轉(zhuǎn)節(jié)點(diǎn)),其左子節(jié)點(diǎn)變?yōu)樾D(zhuǎn)節(jié)點(diǎn)的父節(jié)點(diǎn),左子節(jié)點(diǎn)的右子節(jié)點(diǎn)變?yōu)樾D(zhuǎn)節(jié)點(diǎn)的左子節(jié)點(diǎn),右子節(jié)點(diǎn)保持不變

在這里插入圖片描述

變色:節(jié)點(diǎn)的顏色由紅色變?yōu)楹谏蛘吆谏優(yōu)榧t色

在這里插入圖片描述

紅黑樹插入場景

1、紅黑樹為空

1.1 插入節(jié)點(diǎn)作為根節(jié)點(diǎn)并把節(jié)點(diǎn)設(shè)置為黑色

2、插入節(jié)點(diǎn)的父節(jié)點(diǎn)為黑節(jié)點(diǎn)\

2.1 直接插入

3、插入節(jié)點(diǎn)的父節(jié)點(diǎn)為紅節(jié)點(diǎn)

3.1 叔叔節(jié)點(diǎn)存在且為紅節(jié)點(diǎn)

  • 1、P節(jié)點(diǎn)和S節(jié)點(diǎn)設(shè)置為黑色
  • 2、PP節(jié)點(diǎn)設(shè)置為紅色
  • 3、PP設(shè)置為當(dāng)前插入節(jié)點(diǎn)
  • 4、再次重復(fù)上述步驟

3.2 叔叔節(jié)點(diǎn)不存在或者叔叔節(jié)點(diǎn)為黑色

3.2.1 P節(jié)點(diǎn)是PP節(jié)點(diǎn)的左節(jié)點(diǎn)

3.2.1.1 插入節(jié)點(diǎn)是P節(jié)點(diǎn)的左節(jié)點(diǎn)

  • 1、P設(shè)置為黑色
  • 2、PP節(jié)點(diǎn)設(shè)置為紅色
  • 3、PP節(jié)點(diǎn)右旋

3.2.1.2 插入節(jié)點(diǎn)是P節(jié)點(diǎn)的右節(jié)點(diǎn)

  • 1、P節(jié)點(diǎn)左旋
  • 2、把P設(shè)置為插入節(jié)點(diǎn)(此時(shí)等于上面的場景)
  • 3、PP節(jié)點(diǎn)右旋

3.2.2 P節(jié)點(diǎn)是PP節(jié)點(diǎn)的右節(jié)點(diǎn)

3.2.2.1 插入節(jié)點(diǎn)是P節(jié)點(diǎn)的右節(jié)點(diǎn)

  • 1、P節(jié)點(diǎn)設(shè)置為黑色
  • 2、PP節(jié)點(diǎn)設(shè)置為紅色
  • 3、PP節(jié)點(diǎn)左旋

3.2.2.2 插入節(jié)點(diǎn)是P節(jié)點(diǎn)的左節(jié)點(diǎn)

  • 1、P節(jié)點(diǎn)右旋
  • 2、將P設(shè)置為插入節(jié)點(diǎn)(此時(shí)等于上面場景)
  • 3、PP節(jié)點(diǎn)左旋

PP節(jié)點(diǎn)左旋

3.2.2.2 插入節(jié)點(diǎn)是P節(jié)點(diǎn)的左節(jié)點(diǎn)

  • ​ 1、P節(jié)點(diǎn)右旋
  • ​ 2、將P設(shè)置為插入節(jié)點(diǎn)(此時(shí)等于上面場景)
  • ​ 3、PP節(jié)點(diǎn)左旋

在這里插入圖片描述

到此這篇關(guān)于詳解Java集合中的基本數(shù)據(jù)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring boot如何指定啟動(dòng)端口

    spring boot如何指定啟動(dòng)端口

    這篇文章主要介紹了spring boot如何指定啟動(dòng)端口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot統(tǒng)計(jì)接口調(diào)用耗時(shí)的三種方式

    SpringBoot統(tǒng)計(jì)接口調(diào)用耗時(shí)的三種方式

    在實(shí)際開發(fā)中,了解項(xiàng)目中接口的響應(yīng)時(shí)間是必不可少的事情,SpringBoot 項(xiàng)目支持監(jiān)聽接口的功能也不止一個(gè),接下來我們分別以 AOP、ApplicationListener、Tomcat 三個(gè)方面去實(shí)現(xiàn)三種不同的監(jiān)聽接口響應(yīng)時(shí)間的操作,需要的朋友可以參考下
    2024-06-06
  • Springboot hibernate envers使用過程詳解

    Springboot hibernate envers使用過程詳解

    這篇文章主要介紹了Springboot hibernate envers使用過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 最新評論

    天津市| 房产| 武清区| 芜湖县| 天祝| 石首市| 漠河县| 洪雅县| 武鸣县| 新竹市| 崇明县| 元氏县| 同江市| 江北区| 秀山| 望谟县| 同德县| 全南县| 耿马| 南部县| 永川市| 红河县| 册亨县| 隆安县| 雅江县| 岱山县| 阜平县| 大余县| 龙江县| 吉首市| 福鼎市| 尼勒克县| 巴马| 塘沽区| 五指山市| 虹口区| 砀山县| 和龙市| 枣强县| 开化县| 屏东县|