【數據結構】初識集合框架及背后的數據結構(簡單了解)

目錄

前言

如何學好數據結構

1. 什么是集合框架

2. 集合框架的重要性

3. 背后所涉及的數據結構以及算法

3.1 什么是數據結構

3.2 容器背后對應的數據結構

3.3 相關java知識

3.4 什么是算法

3.5 基本關系說明(重要,簡單了解)


前言

什么是數據結構?

  • 數據結構是一門單獨的學科,它和語言沒有關系。
  • 數據 + 結構:用來描述和組織數據的
  • 為什么會有那么多的數據結構?︰是因為我們描述和組織數據的方式不一樣所以我們有很多種數據結構,來應付不同的場景來使用。
  • 經常會聽到同學問:C++的數據結構和Java的數據結構有什么區別?
  • 這個問題是錯誤的問題。數據結構的實現只是用的工具(編程語言)不一樣。當前數據結構的思想一樣的。
  • C++和Java只是語言不一樣,工具不一樣。

什么是數據庫?

  • 數據庫(服務器MySQL)也是單獨的學科。oracle數據庫是付費的,一般大的企業在用。
  • 數據庫是用來持久化存儲數據的。數據庫底層用到數據結構來描述存儲的數據。
  • 數據庫服務器-》數據庫s-》表s? -》數據。

什么是集合類?

  • Java當中的集合類其實就是被封裝好的數據結構。
  • 寫博客的邏輯:先講某個數據結構具體的實現,然后類比在Java當中封裝好的數據結構類(集合)。
  • 原始的數據結構 -》告訴你Java封裝成的集合對應的是哪個 -》你再用。
  • 在C++中叫STL,在Java中叫集合類或者集合框架。

如何學好數據結構

學好數據結構你會有一個質的飛躍!和別人拉開差距就看數據結構了!!

  1. 多畫圖
  2. 多思考
  3. 多寫代碼(不寫2遍以上是不會理解的,寫5遍基本上問題不大了)

遇見題目:

  1. 如果每個地方不懂,看代碼畫圖。
  2. 看圖寫代碼,不會的再看代碼。
  3. 思考
  4. 全部刪除,重新畫圖再寫。(這一遍盡量不要頻繁看,慢慢脫離代碼)

數據結構是一門邏輯非常嚴謹的學科。理解思想很重要。學習數據結構不僅能鍛煉邏輯思維,還能提升對代碼書寫的流暢度。大大提高代碼量。

集合框架及背后的數據結構,怎么理解標題的含義:

  • 集合:就是java寫好的一些數據結構
  • 框架:數據結構之間存在一定的聯系
  • 數據結構:描述和組織數據的一種方式

1. 什么是集合框架

Java 集合框架(Java Collection Framework),又被稱為容器(container)定義在 java.util 包下的一組接口 (interfaces) 和其實現類 (classes)。util 工具,稱工具包,因此基本上在Java當中與工具相關的都在util包底下。

其主要表現為將多個元素(element)置于一個單元中,用于對這些元素進行快速、便捷的存儲 store 、檢索 retrieve 、管理 manipulate ,即平時我們俗稱的增刪查改 CRUD .

例如,一副撲克牌(一組牌的集合)、一個郵箱(一組郵件的集合)、一個通訊錄(一組姓名和電話的映射關系)等等。

類和接口總覽:(下圖并非把所有的接口,抽象類 ,實現類都給列舉出來了。只列舉出了重要的部分) 每個實現類都是集合類

  1. 這張圖描述了Java當中,類與類,類與接口 之間的關系
  2. 了解清楚,接口與接口之間的關系? extends(拓展)關系
  3. 了解清楚,類與接口之間的關系? implemments 實現的關系
  4. 了解清楚,每個類背后的數據結構大概是個啥?
  5. 重要的接口有四個:List、Queue、Set、Map其他類都是實現了這些接口。

2. 集合框架的重要性

1. 開發中的使用

  • 使用成熟的集合框架,有助于我們便捷、快速的寫出高效、穩定的代碼。
  • 學習背后的數據結構知識,有助于我們理解各個集合的優缺點及使用場景。

2. 筆試及面試題

3. 背后所涉及的數據結構以及算法

3.1 什么是數據結構

數據結構(Data Structure)是計算機存儲、組織數據的方式,指相互之間存在一種或多種特定關系的數據元素的集合。
?

3.2 容器背后對應的數據結構

該階段,我們主要學習以下容器,每個容器其實都是對某種特定數據結構的封裝,大概了解一下,后序會給大家詳細講解并模擬實現:

1. Collection:是一個接口,包含了大部分容器常用的一些方法

2. List:是一個接口,規范了ArrayList 和 LinkedList中要實現的方法

  • ArrayList:實現了List接口,底層為動態類型順序表
  • LinkedList:實現了List接口,底層為雙向鏈表

3. Stack:底層是棧,棧是一種特殊的順序表

4. Queue:底層是隊列,隊列是一種特殊的順序表

5. Deque:是一個接口

6. Set:集合,是一個接口,里面放置的是K模型

  • HashSet:底層為哈希桶,查詢的時間復雜度為O(1)
  • TreeSet:底層為紅黑樹,查詢的時間復雜度為O(log2 N),關于key有序的

7. Map:映射,里面存儲的是K-V模型的鍵值對

  • HashMap:底層為哈希桶,查詢時間復雜度為O(1)
  • TreeMap:底層為紅黑樹,查詢的時間復雜度為O(log2 N),關于key有序

3.3 相關java知識

學數據結構前,需要先掌握的一些知識:

  1. 泛型 Generic
  2. 自動裝箱 autobox? 和自動拆箱 autounbox
  3. Object 的 equals 方法
  4. Comparable 和 Comparator 接口

3.4 什么是算法

  • 算法(Algorithm):就是定義良好的計算過程,他取一個或一組的值為輸入,并產生出一個或一組值作為輸出。簡單來說算法就是一系列的計算步驟,用來將輸入數據轉化成輸出結果。
  • 數據結構與算法:相輔相成的

3.5 基本關系說明(重要,簡單了解)

  • lterable 接口:有一個for-each() 功能
  • Collection 接口 :用來存儲管理一組對象(objects),這些對象一般被成為元素 (elements)
  • List 接口:多半部分為線性結構
  • Queue 接口:隊列(其實隊列也屬于線性結構,但是有一種隊列不屬于線性結構,如:優先級隊列——底層是一個二叉樹,樹形結 構)
  • PriorityQueue類:優先級隊列,每個元素都具備優先級,根據優先級入隊出隊
  • Deque接口:雙端隊列
  • Set接口:集合(元素不能重復)
  • SortedSet接口:有序且不能重復的元素集合
  • Map接口:底層是

隊列:例如,排隊打飯;有隊尾和隊頭,隊尾進隊頭出。

雙端隊列:有隊尾和隊頭;隊尾進隊尾出,隊頭進隊頭出,兩端都可以進也可以出。


好啦Y(^o^)Y,本節內容就到此結束了,感謝大家的閱讀瀏覽,期望大家的一鍵三連喲!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72906.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72906.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72906.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

P9242 [藍橋杯 2023 省 B] 接龍數列--DP【巧妙解決接龍問題】

P9242 [藍橋杯 2023 省 B] 接龍數列--DP 題目 解析什么時候該用 DP?動態規劃 vs 其他方法代碼 題目 解析 這題沒思路,壓根沒想到DP 😦 看了大神的題解,利用dp記錄每一個數結尾的長度,最后再用N-dp中的最大值&#xf…

用《設計模式》的角度優化 “枚舉”

枚舉應該都有用過,枚舉主要的作用是為了方便用戶查找和引用枚舉。 案例一 下面的枚舉邏輯很簡單,就是通過枚舉值返回不同的結果。 public enum OperationEnum {EQUAL_TO,CONTAINS,START_WITH,END_WITH;public String getOperationValue(String value)…

SQL根據分隔符折分不同的內容放到臨時表

SQL Server存儲過程里根據分隔符折分不同的內容放到臨時表里做查詢條件,以下分隔符使用“/”,可修改不同分隔符 --根據分隔符折分不同的內容放到臨時表--------------- SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS id, LTRIM(RTR…

Ubuntu切換lowlatency內核

文章目錄 一. 前言二. 開發環境三. 具體操作 一. 前言 低延遲內核(Lowlatency Kernel) 旨在為需要低延遲響應的應用程序設計的內核版本。Linux-lowlatency特別適合音頻處理、實時計算、游戲和其他需要及時響應的實時任務。其主要特點是優化了中斷處理、調…

基于Django創建一個WEB后端框架(DjangoRestFramework+MySQL)流程

一、Django項目初始化 1.創建Django項目 Django-admin startproject 項目名 2.安裝 djangorestframework pip install djangorestframework 解釋: Django REST Framework (DRF) 是基于 Django 框架的一個強大的 Web API 框架,提供了多種工具和庫來構建 RESTf…

VUE3開發-9、axios前后端跨域問題解決方案

VUE前端解決跨域問題 前端頁面需要改寫 如果無效,記得重啟服務器 后端c#解決跨域問題 前端js取值,后端c#跨域_c# js跨域-CSDN博客

DailyNotes 增加提醒功能

TODO:準備給 DailyNotes 增加一個提醒功能,準備接入 AI 來做一些事情。試了一下,非常靠譜。 具體 DailyNotes 和 Ollama 的交互方式,可以直接調用命令行,也可以走網絡API。 rayuK2CD9WCYN4 ~ % ollama run deepseek-…

PY32MD320單片機 QFN32封裝,內置多功能三相 NN 型預驅。

PY32MD320單片機是普冉半導體的一款電機專用MCU,芯片采用了高性能的 32 位 ARM Cortex-M0 內核,主要用于電機控制。PY32MD320嵌入高達 64 KB Flash 和 8 KB SRAM 存儲器,最高工作頻率 48 MHz。PY32MD320單片機的工作溫度范圍為 -40 ~ 105 ℃&…

OpenManus介紹及本地部署體驗

1.OpenManus介紹 OpenManus,由 MetaGPT 團隊精心打造的開源項目,于2025年3月發布。它致力于模仿并改進 Manus 這一封閉式商業 AI Agent 的核心功能,為用戶提供無需邀請碼、可本地化部署的智能體解決方案。換句話說,OpenManus 就像…

【貪心算法】簡介

1.貪心算法 貪心策略:解決問題的策略,局部最優----》全局最優 (1)把解決問題的過程分成若干步 (2)解決每一步的時候,都選擇當前看起來的“最優”的算法 (3)“希望”得…

springboot知識點以及源碼解析(2)

web開發--靜態規則與定制化 springboot對靜態資源的映射規則:在類路徑下面定義目錄static或public或resources或者META-INF/resources,訪問時項目根目錄靜態資源的名稱 在springboot中,如果項目中存在同名的靜態資源和同名的動態資源。那么我…

C++:string容器(下篇)

1.string淺拷貝的問題 // 為了和標準庫區分,此處使用String class String { public :/*String():_str(new char[1]){*_str \0;}*///String(const char* str "\0") // 錯誤示范//String(const char* str nullptr) // 錯誤示范String(const char* str …

使用 vxe-table 導出 excel,支持帶數值、貨幣、圖片等帶格式導出

使用 vxe-table 導出 excel,支持帶數值、貨幣、圖片等帶格式導出,通過官方自動的導出插件 plugin-export-xlsx 實現導出功能 查看官網:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:htt…

JavaScript數據類型和內存空間

一、JavaScript 數據類型 基本數據類型:字符串(String)、數字(Number)、布爾(Boolean)、空(Null)、未定義(Undefined)、Symbol 引用數據類型:對象(Object)、數組(Array)、函數(Fun…

DNS Beaconing

“DNS Beaconing” 是一種隱蔽的網絡通信技術,通常與惡意軟件(如木馬、僵尸網絡)相關。攻擊者通過定期發送 DNS請求 到受控的域名服務器(C&C服務器),實現與惡意軟件的隱蔽通信、數據傳輸或指令下發。由…

python中采用opencv作常規的圖片處理的方法~~~

在python中,我們經常會需要對圖片做灰度/二值化/模糊等處理,這時候opencv就是我們的好幫手了,下面我來介紹一下相關用法: 首先,需要安裝opencv-python庫: 然后,在你的代碼中引用: import cv2 最后就是代碼了&#x…

CmBacktrace的學習跟移植思路

學習移植CmBacktrace需要從理解其核心功能、適用場景及移植步驟入手,結合理論學習和實踐操作。以下是具體的學習思路與移植思路: 一、學習思路 理解CmBacktrace的核心功能 CmBacktrace是針對ARM Cortex-M系列MCU的錯誤追蹤庫,支持自動診斷Har…

支付寶當面付java,php,sdk下載

SDK & Demo 獲取 - 支付寶文檔中心 開放平臺服務端 SDK 為了幫助開發者調用開放接口,支付寶提供了開放平臺服務端 SDK,包含 Java、PHP、NodeJS、Python 和 .NET 等語言版本,DEMO 中封裝了簽名 & 驗簽、HTTP 接口請求等基礎功能。 詳…

Cocos Creator Shader入門實戰(三):CCEffect參數配置講解

引擎版本:3.8.5 您好,我是鶴九日! 回顧 稍微回顧下前面兩篇博客講解的內容: 一、Cocos渲染效果的實現需要Material材質和Effect資源的互相配合。 二、Effect資源負責Shader片段的編寫和屬性配置,Material材質負責對E…

AI日報 - 2025年3月10日

AI日報 - 2025年3月10日 🌟 今日概覽(60秒速覽) ▎🤖 AGI突破 | Anthropic CEO預測強AI最早2026年到來 🔬 SAGE框架提升問答質量61.25%,Reflexion框架將GPT-4成功率提至91% ▎💼 商業動向 | xA…