更新時(shí)間:2022-11-15 10:59:57 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2831次
2022年Java常用數(shù)據(jù)結(jié)構(gòu)有哪些?動(dòng)力節(jié)點(diǎn)小編來告訴大家。
Java 編程語言在語言本身中提供了對(duì)數(shù)組的內(nèi)置支持。它有一個(gè)特殊的語法來聲明一個(gè)像int[]這樣的數(shù)組,它是一個(gè)原始 int 類型的數(shù)組。您可以創(chuàng)建一個(gè)包含Java引用類型和基元的數(shù)組。
此外,與 C 編程語言不同,Java 中的數(shù)組是有界的,如果您使用無效索引 ,您將得到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 上開設(shè)的這個(gè)精彩的 FAANG 面試準(zhǔn)備課程。它被稱為掌握編程面試:大型科技 (FAANG) 面試,它將幫助您為 Facebook、Apple、Amazon、Netflix 和 Google 面試做準(zhǔn)備。
哈希表、映射或字典是我見過的最通用的數(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),您可能聽說過 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()方法來插入對(duì)象和一個(gè) pop()方法從頂部消費(fèi)元素。
棧在不同的編程任務(wù)中非常流行,比如計(jì)算表達(dá)式。對(duì)了,不要把 Stack 數(shù)據(jù)結(jié)構(gòu)和stack memory搞混了,在 Java 中是用來存放局部變量和方法幀的。
隊(duì)列數(shù)據(jù)結(jié)構(gòu)在 Java 集合框架中也作為接口和一些具體實(shí)現(xiàn)(如ArrayBlockingQueue、LinkedList和PriorityQueue )提供。
盡管您也可以使用 LinkedList 或數(shù)組來實(shí)現(xiàn) Queue,但最好使用經(jīng)過試用和測(cè)試的現(xiàn)有類。
這不僅減少了開發(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)來存儲(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ù)情況來說已經(jīng)足夠了。這些集合,除了起始集合,還提供排序和插入順序。
這個(gè)程序最好的一點(diǎn)是,您可以在手機(jī)上訪問 50 個(gè)算法難題,以提高和提高您的算法技能,以及 100 多個(gè)大型科技公司經(jīng)常提出的編碼問題。更重要的是,您會(huì)得到關(guān)于您的解決方案是否正確的即時(shí)反饋。
這就是Java 開發(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)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)