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

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

 更新時(shí)間:2023年10月24日 09:12:13   作者:不是懶大王  
HashMap和HashSet都是存儲(chǔ)在哈希桶之中,通過(guò)本文我們可以先了解一些哈希桶是什么,本文結(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來(lái)實(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)文章

  • 淺談JVM內(nèi)存溢出原因和解決思路

    淺談JVM內(nèi)存溢出原因和解決思路

    本文主要介紹了淺談JVM內(nèi)存溢出原因和解決思路,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Java基于Tcp協(xié)議的socket編程實(shí)例

    Java基于Tcp協(xié)議的socket編程實(shí)例

    這篇文章主要介紹了Java基于Tcp協(xié)議的socket編程實(shí)例,較為詳細(xì)的分析了socket編程客戶端與服務(wù)器端的具體實(shí)現(xiàn)步驟與使用技巧,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Java7到Java17之Switch語(yǔ)句進(jìn)化史示例詳解

    Java7到Java17之Switch語(yǔ)句進(jìn)化史示例詳解

    這篇文章主要為大家介紹了Java7到Java17之Switch語(yǔ)句進(jìn)化史示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Spring Security學(xué)習(xí)筆記(一)

    Spring Security學(xué)習(xí)筆記(一)

    這篇文章主要介紹了Spring Security的相關(guān)資料,幫助大家開(kāi)始學(xué)習(xí)Spring Security框架,感興趣的朋友可以了解下
    2020-09-09
  • java 操作gis geometry類型數(shù)據(jù)方式

    java 操作gis geometry類型數(shù)據(jù)方式

    這篇文章主要介紹了java 操作gis geometry類型數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)

    mybatis執(zhí)行批量更新batch update 的方法(oracle,mysql兩種)

    這篇文章主要介紹了mybatis執(zhí)行批量更新batch update 的方法,提供oracle和mysql兩種方法,非常不錯(cuò),需要的朋友參考下
    2017-01-01
  • 使用SpringMVC訪問(wèn)Controller接口返回400BadRequest

    使用SpringMVC訪問(wèn)Controller接口返回400BadRequest

    這篇文章主要介紹了使用SpringMVC訪問(wèn)Controller接口返回400BadRequest,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring @Conditional注解從源碼層講解

    Spring @Conditional注解從源碼層講解

    @Conditional是Spring4新提供的注解,它的作用是按照一定的條件進(jìn)行判斷,滿足條件給容器注冊(cè)bean,這篇文章主要介紹了Spring @Conditional注解示例詳細(xì)講解,需要的朋友可以參考下
    2023-01-01
  • 深入分析java文件路徑的詳解

    深入分析java文件路徑的詳解

    本篇文章是對(duì)java文件路徑進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • SpringBoot整合JavaMail郵件的兩種方式

    SpringBoot整合JavaMail郵件的兩種方式

    這篇文章主要介紹了SpringBoot整合JavaMail郵件的兩種方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評(píng)論