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

Java數(shù)據(jù)結(jié)構(gòu)中的HashMap和HashSet詳解

 更新時(shí)間:2023年10月24日 09:12:13   作者:不是懶大王  
HashMap和HashSet都是存儲(chǔ)在哈希桶之中,通過本文我們可以先了解一些哈希桶是什么,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧

HashMap和HashSet都是存儲(chǔ)在哈希桶之中,我們可以先了解一些哈希桶是什么。

像這樣,一個(gè)數(shù)組數(shù)組的每個(gè)節(jié)點(diǎn)帶著一個(gè)鏈表,數(shù)據(jù)就存放在鏈表結(jié)點(diǎn)當(dāng)中。哈希桶插入/刪除/查找節(jié)點(diǎn)的時(shí)間復(fù)雜度是O(1)

map代表存入一個(gè)key值,一個(gè)val值。map可多次存儲(chǔ),當(dāng)?shù)诙尾迦霑r(shí),會(huì)更新val值。

set代表只存入一個(gè)key值,但在實(shí)際源碼中,set的底層其實(shí)也是靠map來實(shí)現(xiàn)的。set只能存入數(shù)據(jù)一次,當(dāng)?shù)诙尾迦霑r(shí),若哈希桶中存在元素則返回false。

下面是代碼實(shí)現(xiàn)

// key-value 模型
public class HashBucket {
private static class Node {
private int key;
private int value;
Node next;
public Node(int key, int value) {
this.key = key;
this.value = value;
}
}
private Node[] array;
private int size; // 當(dāng)前的數(shù)據(jù)個(gè)數(shù)
private static final double LOAD_FACTOR = 0.75;
public int put(int key, int value) {
int index = key % array.length;
// 在鏈表中查找 key 所在的結(jié)點(diǎn)
// 如果找到了,更新
// 所有結(jié)點(diǎn)都不是 key,插入一個(gè)新的結(jié)點(diǎn)
for (Node cur = array[index]; cur != null; cur = cur.next) {
if (key == cur.key) {
int oldValue = cur.value;
cur.value = value;
return oldValue;
}
} N
ode node = new Node(key, value);
node.next = array[index];
array[index] = node;
size++;
if (loadFactor() >= LOAD_FACTOR) {
resize();
} r
eturn -1;
}
private void resize() {
Node[] newArray = new Node[array.length * 2];
for (int i = 0; i < array.length; i++) {
Node next;
for (Node cur = array[i]; cur != null; cur = next) {
next = cur.next;
int index = cur.key % newArray.length;
cur.next = newArray[index];
newArray[index] = cur;
}
} a
rray = newArray;
}
private double loadFactor() {
return size * 1.0 / array.length;
}
public HashBucket() {
array = new Node[8];
size = 0;
}
public int get(int key) {
int index = key % array.length;
Node head = array[index];
for (Node cur = head; cur != null; cur = cur.next) {
if (key == cur.key) {
return cur.value;
}
} 
return -1;
}
}

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

相關(guān)文章

  • 多個(gè)版本JAVA切換的簡(jiǎn)單步驟記錄

    多個(gè)版本JAVA切換的簡(jiǎn)單步驟記錄

    在工作中或者學(xué)習(xí)過程中,有一些特殊情況我們需要來切換java版本來做比較,比如一些新特性等等的相關(guān)資料,這篇文章主要介紹了多個(gè)版本JAVA切換的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • SpringBoot3集成Thymeleaf的過程詳解

    SpringBoot3集成Thymeleaf的過程詳解

    在現(xiàn)代的Web開發(fā)中,構(gòu)建靈活、動(dòng)態(tài)的用戶界面是至關(guān)重要的,Spring Boot和Thymeleaf的結(jié)合為開發(fā)者提供了一種簡(jiǎn)單而強(qiáng)大的方式來創(chuàng)建動(dòng)態(tài)的Web應(yīng)用,本文將介紹如何在Spring Boot項(xiàng)目中集成Thymeleaf,并展示一些基本的使用方法,需要的朋友可以參考下
    2024-01-01
  • MyBatis實(shí)現(xiàn)動(dòng)態(tài)查詢、模糊查詢功能

    MyBatis實(shí)現(xiàn)動(dòng)態(tài)查詢、模糊查詢功能

    這篇文章主要介紹了MyBatis實(shí)現(xiàn)動(dòng)態(tài)查詢、模糊查詢功能,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • java實(shí)現(xiàn)電腦端掃描二維碼

    java實(shí)現(xiàn)電腦端掃描二維碼

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)電腦端掃描二維碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • spring boot利用docker構(gòu)建gradle項(xiàng)目的實(shí)現(xiàn)步驟

    spring boot利用docker構(gòu)建gradle項(xiàng)目的實(shí)現(xiàn)步驟

    這篇文章主要給大家介紹了關(guān)于spring boot利用docker構(gòu)建gradle項(xiàng)目的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • Java優(yōu)雅的關(guān)閉線程池的方法

    Java優(yōu)雅的關(guān)閉線程池的方法

    本文主要介紹了Java如何優(yōu)雅的關(guān)閉線程池,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • MyBatis會(huì)話模塊詳解

    MyBatis會(huì)話模塊詳解

    本文主要介紹了MyBatis會(huì)話模塊詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-02-02
  • logback自定義json日志輸出示例詳解

    logback自定義json日志輸出示例詳解

    這篇文章主要為大家介紹了logback自定義json日志輸出,就是通過logback日志體系以及l(fā)ogstash提供的json?log依賴將數(shù)據(jù)以json格式記錄到日志文件的例子
    2022-03-03
  • mybatis取別名typeAliases標(biāo)簽的位置放錯(cuò)導(dǎo)致報(bào)錯(cuò)的解決

    mybatis取別名typeAliases標(biāo)簽的位置放錯(cuò)導(dǎo)致報(bào)錯(cuò)的解決

    這篇文章主要介紹了mybatis取別名typeAliases標(biāo)簽的位置放錯(cuò)導(dǎo)致報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SWT(JFace)體驗(yàn)之List演示匯總

    SWT(JFace)體驗(yàn)之List演示匯總

    SWT(JFace)體驗(yàn)之List演示代碼匯總
    2009-06-06

最新評(píng)論

西乌珠穆沁旗| 昔阳县| 太保市| 连云港市| 永胜县| 鲜城| 江西省| 乌拉特中旗| 磐石市| 合阳县| 铜山县| 莱西市| 延安市| 中西区| 改则县| 延吉市| 孝感市| 永兴县| 阳泉市| 静安区| 合作市| 丹寨县| 元阳县| 仙游县| 天祝| 同江市| 定结县| 哈尔滨市| 聊城市| 怀远县| 永靖县| 施秉县| 武川县| 容城县| 托克托县| 朝阳市| 慈利县| 灵台县| 贡嘎县| 阿尔山市| 南安市|