更新時(shí)間:2022-11-15 10:59:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3194次
2022年Java常用數(shù)據(jù)結(jié)構(gòu)有哪些?動(dòng)力節(jié)點(diǎn)小編來(lái)告訴大家。

Java 編程語(yǔ)言在語(yǔ)言本身中提供了對(duì)數(shù)組的內(nèi)置支持。它有一個(gè)特殊的語(yǔ)法來(lái)聲明一個(gè)像int[]這樣的數(shù)組,它是一個(gè)原始 int 類型的數(shù)組。您可以創(chuàng)建一個(gè)包含Java引用類型和基元的數(shù)組。
此外,與 C 編程語(yǔ)言不同,Java 中的數(shù)組是有界的,如果您使用無(wú)效索引 ,您將得到ArrayIndexOutOfBoundException 。
Java 中的數(shù)組也是同質(zhì)的,你不能在一個(gè)數(shù)組中存儲(chǔ)多種類型的對(duì)象——就像你只能在String[]中存儲(chǔ)一個(gè) String ,如果你試圖存儲(chǔ) Integer,你將在運(yùn)行時(shí)得到ArrayStoreException。
您可以進(jìn)一步查看 數(shù)據(jù)結(jié)構(gòu)和算法:使用 Java 深入研究 以了解有關(guān)數(shù)組和其他基本數(shù)據(jù)結(jié)構(gòu)和算法的更多信息,更重要的是如何在 Java 程序中使用它們。
除了數(shù)組,鏈表是編程中的另一種基本數(shù)據(jù)結(jié)構(gòu)。Java 提供了雙向鏈表的實(shí)現(xiàn)java.util.LinkedList,只要需要鏈表數(shù)據(jù)結(jié)構(gòu)就可以使用這個(gè)類。
由于 LinkedList 是 Collection 框架的一部分,它也實(shí)現(xiàn)了 Collection 和 Iterable 接口,這允許迭代它們。您可以查看本文以了解有關(guān)Java 中的 LinkedList 的更多信息。
而且,如果您正在修改 FAANG 面試的數(shù)據(jù)結(jié)構(gòu)概念,那么我還建議您參加 Andrei Negaoi 在 Udemy 上開(kāi)設(shè)的這個(gè)精彩的 FAANG 面試準(zhǔn)備課程。它被稱為掌握編程面試:大型科技 (FAANG) 面試,它將幫助您為 Facebook、Apple、Amazon、Netflix 和 Google 面試做準(zhǔn)備。
哈希表、映射或字典是我見(jiàn)過(guò)的最通用的數(shù)據(jù)結(jié)構(gòu)之一。我偶爾會(huì)用到 Map ,幸運(yùn)的是,Java API 為不同的需求提供了幾種 Map 數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),如HashMap、Hashtable和ConcurrentHashMap。
它也被稱為地圖或字典數(shù)據(jù)結(jié)構(gòu),您可能聽(tīng)說(shuō)過(guò) Python 中的字典,它與 Java 中的地圖相同。
映射為您提供 O(1) 功能,用于在您知道密鑰的情況下取回值,這在大多數(shù) Java 應(yīng)用程序中是一個(gè)非常自然的用例。
Java API 還提供了一個(gè)作為java.util.Stack實(shí)現(xiàn)的 Stack 數(shù)據(jù)結(jié)構(gòu)。此類擴(kuò)展了用于存儲(chǔ)元素的遺留 Vector 類。由于堆棧是后進(jìn)先出(LIFO)數(shù)據(jù)結(jié)構(gòu),它提供了一個(gè) push()方法來(lái)插入對(duì)象和一個(gè) pop()方法從頂部消費(fèi)元素。
棧在不同的編程任務(wù)中非常流行,比如計(jì)算表達(dá)式。對(duì)了,不要把 Stack 數(shù)據(jù)結(jié)構(gòu)和stack memory搞混了,在 Java 中是用來(lái)存放局部變量和方法幀的。
隊(duì)列數(shù)據(jù)結(jié)構(gòu)在 Java 集合框架中也作為接口和一些具體實(shí)現(xiàn)(如ArrayBlockingQueue、LinkedList和PriorityQueue )提供。
盡管您也可以使用 LinkedList 或數(shù)組來(lái)實(shí)現(xiàn) Queue,但最好使用經(jīng)過(guò)試用和測(cè)試的現(xiàn)有類。
這不僅減少了開(kāi)發(fā)時(shí)間,而且還提高了應(yīng)用程序的整體代碼質(zhì)量和性能。BlockingQueue 是 Queue 接口的線程安全擴(kuò)展,可用于在 Java 中實(shí)現(xiàn)生產(chǎn)者-消費(fèi)者模式。
Set 是一種特殊的數(shù)據(jù)結(jié)構(gòu),不允許重復(fù)。這是一個(gè)很好的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)唯一元素,例如 Id,例如 EmployeeId、OrderId、TradeId 等。每當(dāng)您存儲(chǔ)需要唯一的數(shù)據(jù)時(shí),您都可以使用 Set 數(shù)據(jù)結(jié)構(gòu)。如果您嘗試插入重復(fù)項(xiàng),Set 將不會(huì)接受它并且其方法將返回 false 以指示插入失敗。
Java Collection API 提供了幾個(gè) Set 的實(shí)現(xiàn),如 HashSet、TreeSet 和 LinkedHashSet,這對(duì)大多數(shù)情況來(lái)說(shuō)已經(jīng)足夠了。這些集合,除了起始集合,還提供排序和插入順序。
這個(gè)程序最好的一點(diǎn)是,您可以在手機(jī)上訪問(wèn) 50 個(gè)算法難題,以提高和提高您的算法技能,以及 100 多個(gè)大型科技公司經(jīng)常提出的編碼問(wèn)題。更重要的是,您會(huì)得到關(guān)于您的解決方案是否正確的即時(shí)反饋。
這就是Java 開(kāi)發(fā)人員最基本的一些數(shù)據(jù)結(jié)構(gòu)。除了這些基本的數(shù)據(jù)結(jié)構(gòu),Java 集合框架中還有很多其他的數(shù)據(jù)結(jié)構(gòu),包括BlockingQueue和ConcurrentHashMap等并發(fā)數(shù)據(jù)結(jié)構(gòu)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)