《java數據結構》--順序表詳解

一.順序表的概念🙉

🐱順序表是一段物理地址連續的儲存單元,一次儲存數據元素的線性結構。一般情況下采用數組儲存,和數組的增刪查改類似。

但是順序表和數組還是有區別的比如,數組按照是否可以擴容可以分為,靜態順序表和動態順序表。

靜態順序表,就是順序表的儲存容量是不變的;動態順序表,就是當順序表的容量滿了的時候可以自動擴容。

二.順序表的實現🐱

1.創建順序表🐱

剛剛有提到順序表的儲存邏輯和數組差不多所以我們只需要在內部定義一個數組和記錄容量大小的UsedSize即可。(為了之后方便使用這里使用的是泛型(傳入什么類型就是什么類型),如果不理解泛型的這里可以直接把T當作int來看,不影響)

UsedSize:順序表內實際存儲的數據長度(不是順序表內存大小)

6cc55270cb184920beb7ca529d8f59c2.png

2.判斷順序表是否為空🐱

因為后面會用到較多,所以我們先來寫這個方法,其實順序表內很多方法都很簡單,比如下面這個

我們只需要判斷順序表中存儲數據的數量是否和順序表的內存大小是否相同即可

e776eb9d3fd44eca925ac2dafa99edd4.png

3.指定位置添加數據*🐱

在添加數據之前我們要先看一看,順序表是否已經滿了,如果滿了就擴容(直接使用copyOf)。接下來開始添加,既然要指定位置添加數據那么原來的數據順序肯定不能變而且被指定的位置肯定還要是可覆蓋的,我們直接讓那個位置以后的數據都向后移動一步就行,然后用要添加的數據直接覆蓋掉那個位置就行。(指定的位置要合法)

0ac94025d4434a95b75200181c2408ac.png

4.檢查范圍🐱

檢查傳進來的位置是否合法,方便之后方法的實現

9215019bc36744deb79d3b294a9b6cee.png

5.刪除數據🐱

這個方法也是十分的簡單的呢!只需要檢查一下位置是否合法,然后直接覆蓋掉指定位置就行了。看是不是,輝常簡單😉😉

29af127e6a61456a94ed1ebe506b3d00.png

6.查找指定數據🐱

只需要遍歷順序表一一對比就行然后返回下標

2a3f8dd55d3f4264bd89ac57c05546b1.png

7.刪除第一次出現的數據🐱

要刪除某個數據,我們就要先找到這個數據,這里直接使用我們剛剛實現的Find方法就可以了!找到之后直接刪掉這個位置的數據就行,到這里我們的順序表基本快實現完了,是不是感覺just so so

8b00bd54600243a894bb1172e68d85b1.png

8.獲取長度和清空順序表🐱

清空順序表只需要將UsedSize置為0就好

ab28bee2486246719f8694e8694a6ee6.png

到這里我們的順序表就實現完了,但是Java中的順序表還有很多方法有興趣的小伙伴可以自己去實現一下。

三.順序表的使用🦊

順序表的使用方法比較簡單直接創建一個對象就行這里就不多做贅述了

我們來看一看Java中提供了順序表的哪些方法

//這些方法大部分都很好理解,如果有興趣的小伙伴可以自己試著實現一些😊,不過對于sublist這個方法你可能會有些疑問,截取部分list具體是怎么回事呢?

它的具體作用是返回一個順序表,這個順序表是原來的順序表的一部分,具體的范圍是[fromIndex,toIndex)下標位置的數據。我們來看一個例子

23ed9f52333e4e959d0c8fb10d0e55d5.png

4603c51e72034bc5845b166286a9dad7.png

//這里改了list?3,結果list?1也跟著改了,是因為,sublist方法,并不是返回一個新的數組,而是返回原來數組的sublist的方法的第一個參數下標處的地址也就是返回1下標處的地址,還是在對同一個數組操作

四.順序表的打印🐭

順序表的打印方法一般有一下幾種:

1 sout,

2 for,

3 foreach

4迭代器

這里重點來聊聊迭代器(Integer)(具體內容我直接寫在代碼注釋里了)

🙉到這里順序表的內容就聊完了,如果你還有什么疑問🤔🧐或者不同的見解歡迎在下方評論或私信小編,最后也希望可以支持一下小編啦!!!🥰🥰

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

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

相關文章

duckdb 插件機制研究

本文研究 duckdb 內置的 extensions 工作機制。 插件架構 在 duckdb 源碼內,內置了一組原生插件,位于頂層 extension 目錄下: 除此之外,還支持 Out-of-Tree Extension,簡單說就是獨立的插件,不是集成在源…

Star CCM+繪圖顯示設置

前言 如前文介紹,根據報告創建監視器與繪圖后,在繪圖中會出現報告繪圖。此處可以自定義繪圖的格式,如網格顯示、字體大小、曲線的粗細等。同時也可以根據需要創建右坐標,分別監測不同類型的函數數值。為此方便后期輸出仿真報告。…

哆啦AAA萌也能用HTML畫出來?看這里!【完整代碼可運行】

關注微信公眾號「ClassmateJie」有完整代碼以及更多驚喜等待你的發現。 簡介/效果展示 你是否曾經想過&#xff0c;那些可愛的哆啦A夢角色是如何被創造出來的呢&#xff1f;今天&#xff0c;我要帶你一起探索一個神奇的秘密——用HTML畫出哆啦A夢&#xff01; 代碼 <!DOCT…

【quarkus系列】創建quarkus第一個應用程序

文章目錄 序言環境準備創建項目項目分析程序代碼構建訪問項目 序言 Quarkus 是一個設計用于 Kubernetes 和云原生環境的 Java 框架&#xff0c;具有快速啟動時間、低內存消耗和強大的開發者體驗。溪源將帶您一步步創建一個簡單的 Quarkus 應用程序。 環境準備 在開始之前&am…

Neo4j安裝部署及python連接neo4j操作

Neo4j安裝部署及python連接neo4j操作 Neo4j安裝和環境配置 安裝依賴庫&#xff1a; sudo apt-get install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y 增加Neo4 GPG key&…

為什么并行化將會是下一代的區塊鏈解決方案?

原文標題&#xff1a;《Parallel Execution: The Next Generation of Blockchains》撰文&#xff1a;Paul Timofeev 、Mike Jin、Gabe Tramble 編譯&#xff1a;Chris&#xff0c;Techub News 區塊鏈是虛擬機&#xff0c;一種軟件基礎的計算模型&#xff0c;它運行在任何人都可…

DDOS攻擊和DOS攻擊有什么區別?

DDOS攻擊的全稱為分布式拒絕服務攻擊&#xff0c;能夠使很多個計算機在同一時間內遭受到攻擊&#xff1b;DOS攻擊的全稱則是拒絕服務攻擊&#xff0c;是攻擊者想辦法讓目標機器停止提供服務&#xff0c;對于DDOS攻擊和DOS攻擊我們經常會混淆&#xff0c;但是兩者之間在性質上還…

Pytorch深度學習實踐筆記10(b站劉二大人)

&#x1f3ac;個人簡介&#xff1a;一個全棧工程師的升級之路&#xff01; &#x1f4cb;個人專欄&#xff1a;pytorch深度學習 &#x1f380;CSDN主頁 發狂的小花 &#x1f304;人生秘訣&#xff1a;學習的本質就是極致重復! 《PyTorch深度學習實踐》完結合集_嗶哩嗶哩_bilibi…

C++的第一道門坎:類與對象(一)

1.面向過程與面向對象 1.1面向過程 我們之前學習的C語言就是一種面向過程的語言&#xff0c;面向過程的語言強調的是具體實現的過程&#xff0c;一般用函數來具體實現。我們用面向過程的思想&#xff0c;就可以把炒菜分為以下幾個步驟: 1.2面向對象 而對于面向對象的語言而言…

【簡單介紹下容器是什么?】

&#x1f3a5;博主&#xff1a;程序員不想YY啊 &#x1f4ab;CSDN優質創作者&#xff0c;CSDN實力新星&#xff0c;CSDN博客專家 &#x1f917;點贊&#x1f388;收藏?再看&#x1f4ab;養成習慣 ?希望本文對您有所裨益&#xff0c;如有不足之處&#xff0c;歡迎在評論區提出…

【Spring】Spring AOP底層原理:JDK動態代理和CGLIB動態代理

目錄 1、代理模式 1.1、靜態代理 1.2、動態代理 2、JDK 動態代理 2.1、jdk動態代理簡介 2.2、使用JDK動態代理機制步驟 3、CGLIB 動態代理 3.1、CGLIB 動態代理的特性 3.2、CGLIB的核心類 3.3、CGLIB 動態代理步驟 4、JDK 和 CGLIB 創建代理對象的區別 ?編輯 1、…

通關!游戲設計之道Day16

皆大歡喜計費點 游戲行業中有一項設計顯得越來越重要&#xff0c;那就是計費點設計 是開發者琢磨出來的一系列手段&#xff0c;讓玩家買了游戲之后&#xff0c;還能繼續付費 對于把玩家跟他們的錢拆散&#xff0c;游戲開發者們總是樂此不疲 來看幾個能讓開發者額外多賺些錢…

(四)手把手教你內網穿透,實現外網主機訪問內網服務器

背景&#xff1a;書接上回&#xff0c; 服務器的使用-CSDN博客 課題組成員都有自己的賬號&#xff0c;且能通過內網訪問服務器&#xff0c;進行遠程連接了。我們知道內網中的主機可以訪問公網的主機&#xff0c;反之不可以訪問。那么如果課題組成員在家不在內網區域內&#x…

源碼編譯安裝LAMP與部署

目錄 一、LAMP架構的簡述 1.LAMP搭建時各組件安裝順序 二、編譯安裝Apache httpd服務 1.關閉防火墻&#xff0c;將安裝Apache所需軟件包傳到/opt目錄下 2.安裝環境依賴包?編輯 3.配置軟件模塊 4.編譯及安裝 5.優化配置文件路徑&#xff0c;并把httpd服務的可執行程序文…

基于51單片機的智能燈光控制系統

一.硬件方案 智能燈光控制系統由單片機最小系統、人體感應模塊、關照強度模塊、燈光控制模塊、電源模塊和燈泡組成。本文以STC89C52單片機為核心&#xff0c;通過利用光照度和紅外人體感應相結合主動與被動的探測方法&#xff0c;現了室內無人或者關照充足時燈光自動光燈&…

Kubernetes 容器資源管理Resources和探針Probe

資源配額 Resources 在 Kubernetes 中&#xff0c;resources 配置用于設置容器的資源請求和限制&#xff0c;以確保集群中的資源&#xff08;如 CPU 和內存&#xff09;得到合理分配和使用。 在之前的pod中&#xff0c;不寫 resources 字段。就意味著 Pod 對運行的資源要求“…

Java面試八股之AQS對資源的共享方式

AQS對資源的共享方式 AQS設計了一套靈活的機制&#xff0c;不僅支持獨占&#xff08;Exclusive&#xff09;鎖模式&#xff0c;也支持共享&#xff08;Shared&#xff09;鎖模式&#xff0c;使得資源可以被一個或者多個線程以不同的方式訪問。這兩種模式通過控制一個內部的vol…

技術速遞|宣布 Java on Azure 開發工具支持 Azure Functions Flex Consumption

作者&#xff1a;Jialuo Gan 排版&#xff1a;Alan Wang Azure Functions Flex Consumption 剛剛在微軟 Build 2024大會期間發布&#xff08;詳情請參見本博客&#xff09;。我們很高興地與大家分享&#xff0c;Azure Functions 的 IntelliJ Azure Toolkit 和 Maven 插件現在也…

pyqt QTableView表格控件

pyqt QTableView表格控件 QTableView效果代碼 QTableView QTableView 是 PyQt中的一個控件&#xff0c;用于顯示表格數據。它通常與 QAbstractItemModel 或其子類&#xff08;如 QStandardItemModel&#xff09;一起使用&#xff0c;以提供和管理表格中的數據。 效果 代碼 i…

wordpress主題 ACG美化插件v3.4.2支持zibll主題7b2主題美化

獨具一格的二次元風格&#xff0c;打造全新的子比美化方向 大部分代碼均為CSS、JS做成插件只是為了方便懶人小白站長 后臺全功能一覽&#xff0c;大部分美化均為網上通用流傳&#xff0c;