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

數(shù)據(jù)結(jié)構(gòu)---HashMap和HashSet

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)---HashMap和HashSet。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

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

數(shù)據(jù)結(jié)構(gòu)---HashMap和HashSet,數(shù)據(jù)結(jié)構(gòu),java,算法

像這樣,一個(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)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-735637.html

// 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)于數(shù)據(jù)結(jié)構(gòu)---HashMap和HashSet的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • java八股文面試[數(shù)據(jù)結(jié)構(gòu)]——HashMap擴(kuò)容優(yōu)化

    java八股文面試[數(shù)據(jù)結(jié)構(gòu)]——HashMap擴(kuò)容優(yōu)化

    ? ? ?知識(shí)來(lái)源: 【2023年面試】HashMap在擴(kuò)容上做了哪些優(yōu)化_嗶哩嗶哩_bilibili ?

    2024年02月11日
    瀏覽(33)
  • Java-數(shù)據(jù)結(jié)構(gòu)(二)-Map:HashMap、TreeMap、LinkedHashMap

    Java-數(shù)據(jù)結(jié)構(gòu)(二)-Map:HashMap、TreeMap、LinkedHashMap

    ????Map是Java中常用的數(shù)據(jù)結(jié)構(gòu),它提供了一種鍵值對(duì)的存儲(chǔ)方式,可以根據(jù)鍵來(lái)快速訪問(wèn)值。在本篇文章中,我將學(xué)習(xí)Java中的Map數(shù)據(jù)結(jié)構(gòu) ????問(wèn)題是最好的老師,我將從至少以下幾個(gè)方面闡述,什么是map、使用Map有什么好處、Map的底層原理、map中的key和value分別是

    2024年02月06日
    瀏覽(70)
  • java數(shù)據(jù)結(jié)構(gòu)(哈希表—HashMap)含LeetCode例題講解

    java數(shù)據(jù)結(jié)構(gòu)(哈希表—HashMap)含LeetCode例題講解

    ? 目錄 1、HashMap的基本方法 1.1、基礎(chǔ)方法(增刪改查) 1.2、其他方法? 2、HashMap的相關(guān)例題 2.1、題目介紹 2.2、解題 2.2.1、解題思路 2.2.2、解題圖解 2.3、解題代碼 HashMap 是一個(gè)散列表,它存儲(chǔ)的內(nèi)容是鍵值(key-value)映射。 HashMap 的 key 與 value 類(lèi)型可以相同也可以不同,根據(jù)定

    2024年02月05日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】HashSet的底層數(shù)據(jù)結(jié)構(gòu)

    【數(shù)據(jù)結(jié)構(gòu)】HashSet的底層數(shù)據(jù)結(jié)構(gòu)

    ??個(gè)人主頁(yè): ?? 葉落閑庭 ??我的專(zhuān)欄:?? c語(yǔ)言 數(shù)據(jù)結(jié)構(gòu) javaEE 操作系統(tǒng) Redis 石可破也,而不可奪堅(jiān);丹可磨也,而不可奪赤。 Set 系列集合 無(wú)序:存取順序不一致 不重復(fù):可以去除重復(fù) 無(wú)索引:沒(méi)有帶索引的方法,所以不能使用普通fo循環(huán)遍歷,也不能通過(guò)索引來(lái)獲

    2024年03月16日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)---HashSet存值和取值

    數(shù)據(jù)結(jié)構(gòu)---HashSet存值和取值

    HashMap實(shí)現(xiàn)了Map接口,而HashSet實(shí)現(xiàn)了Set接口。 HashMap用于存儲(chǔ)鍵值對(duì),而HashSet用于存儲(chǔ)對(duì)象。 HashMap不允許有重復(fù)的鍵,可以允許有重復(fù)的值。 HashSet不允許有重復(fù)元素。 HashMap允許有一個(gè)鍵為空,多個(gè)值為空,HashSet允許有一個(gè)空值。 HashMap中使用put()將元素加入map中,而HashS

    2024年02月15日
    瀏覽(16)
  • Java HashMap 和 HashSet 的高效使用技巧

    HashMap 是一種哈希表,它存儲(chǔ)鍵值對(duì)。鍵用于查找值,就像數(shù)組中的索引一樣。 HashMap 的優(yōu)勢(shì)在于它可以使用任何類(lèi)型作為鍵,并且查找速度很快。 HashMap 可以存儲(chǔ)任何類(lèi)型的鍵和值。例如,您可以存儲(chǔ) Integer 鍵和 String 值: HashMap 是一種強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),可用于存儲(chǔ)各種類(lèi)型

    2024年03月11日
    瀏覽(29)
  • Rust 筆記:Rust 語(yǔ)言中哈希結(jié)構(gòu)(哈希映射,HashMap)、集合(哈希集,HashSet)及其使用

    Rust 筆記 Rust 語(yǔ)言中映射(HashMap)與集合(HashSet)及其用法 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 郵箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/130876735 【介紹】:本文介紹 Rust 中哈希結(jié)構(gòu)相關(guān)概念及其使用。在 R

    2024年02月09日
    瀏覽(27)
  • 《HashMap的數(shù)據(jù)結(jié)構(gòu)》

    《HashMap的數(shù)據(jù)結(jié)構(gòu)》

    目錄 HashMap概述: ?數(shù)據(jù)結(jié)構(gòu)的組成: 一個(gè)鍵值對(duì)是如何存入該結(jié)構(gòu)中: HashMap中鏈表和紅黑樹(shù)的用途和轉(zhuǎn)換方式?: ? ???????? ? ? ? ? ?HashMap是基于哈希表的Map接口實(shí)現(xiàn)的,它存儲(chǔ)的內(nèi)容是鍵值對(duì)key,value映射。 該類(lèi)無(wú)序。 ? ? ? ? 在JDK1.7及以前,HashMap的數(shù)據(jù)結(jié)構(gòu)是有

    2024年02月07日
    瀏覽(24)
  • HashMap的數(shù)據(jù)結(jié)構(gòu)

    HashMap基于哈希表的Map接口實(shí)現(xiàn),是以key-value存儲(chǔ)形式存在,即主要用來(lái)存放鍵值對(duì)。HashMap的實(shí)現(xiàn)不是同步的,這意味著它不是線程安全的。它的key、value都可以為null。此外,HashMap中的映射不是有序的。 JDK1.8之前的HashMap由數(shù)組+鏈表組成的,數(shù)組是HashMap的主體,鏈表則是主要

    2024年02月07日
    瀏覽(32)
  • HashMap的數(shù)據(jù)結(jié)構(gòu)(超詳細(xì)版)

    HashMap的數(shù)據(jù)結(jié)構(gòu)(超詳細(xì)版)

    1.初始容量 初始容量用來(lái)規(guī)定哈希表數(shù)組的長(zhǎng)度,默認(rèn)值為16,因?yàn)?6是2的整數(shù)次冪的原因,再小數(shù)據(jù)量下的情況下,能減少 哈希沖突 ,提高性能。在大存儲(chǔ)容量數(shù)據(jù)的時(shí)候,也盡量將數(shù)組長(zhǎng)度定義為2的冪次方,這樣能更好的與索引計(jì)算公式 i=(n-1)hash 配合使用,從而提升性

    2024年03月12日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包