【數據結構與算法】ArrayList 與順序表的實現

目錄

一、List 接口

1.1 List 接口的簡單介紹

1.1 常用方法

二、順序表

2.1 線性表的介紹

2.2 順序表的介紹

2.3 順序表的實現

2.3.1 前置條件:自定義異常

2.3.2 順序表的初始化

2.3.2 順序表的實現

三、ArrayList 實現類

3.1 ArrayList 的兩種使用方式

3.2 ArrayList的構造方法

3.3 常用方法及 API

3.3.1 remove 方法

3.3.2 subList 方法

3.3 ArrayList 的三種遍歷方式

3.3.1 for 循環遍歷

3.3.2 for-each 遍歷

3.3.3 迭代器遍歷

3.4 ArrayList 的擴容機制

3.4.1 無參構造源碼分析

3.4.2 帶參構造源碼分析

3.4.3 借助容器構造源碼分析

四、鏈接算法

4.1 筆試真題

4.1.1 CVTE 刪除字符串

4.1.2 楊輝三角


一、List 接口

1.1 List 接口的簡單介紹

在集合框架中,List是一個接口,繼承自Collection。

Collection也是一個接口,該接口中規范了后序容器中常用的一些方法,具體如下所示:

Iterable也是一個接口,表示實現該接口的類是可以逐個元素進行遍歷的,具體如下:

站在數據結構的角度來看,List就是一個線性表,即n個具有相同類型元素的有限序列,在該序列上可以執行增刪改查以及變量等操作

1.1 常用方法

常用方法如下:

List是個接口,并不能直接用來實例化。如果要使用,必須去實例化List的實現類。在集合框架中,ArrayList和LinkedList都實現了List接口。

二、順序表

2.1 線性表的介紹

線性表(linear list):是 n 個具有相同特性的數據元素的有限序列(序列就是指元素之間是有順序的)。若存在多個元素,則第一個元素無前驅,最后一個元素無后繼,其他每個元素都有且只有一個前驅和后繼。

線性表是一種在實際中廣泛使用的數據結構,常見的線性表:順序表、鏈表、棧、隊列。

線性表在邏輯上是線性結構,也就說是連續的一條直線。但是在物理結構上并不一定是連續的,線性表在物理上存儲時,通常以數組和鏈式結構的形式存儲。

2.2 順序表的介紹

順序表:是用一段物理地址連續的存儲單元依次存儲數據元素的線性結構底層結構是通過數組存儲(因為數組是按順序進行存儲的),在數組上完成數據的增刪查改。

2.3 順序表的實現

2.3.1 前置條件:自定義異常

public class PosOutOfException extends RuntimeException{public PosOutOfException(){super();}public PosOutOfException(String message){super(message);}
}

2.3.2 順序表的初始化

public class MyArrayList {/*** 用于存儲數據元素*/private int[] elem;/*** 代表當前順序表的有效元素的個數:默認值為 0*/private int usedSize;private static final int DEFAULT_SIZE = 10;public MyArrayList() {this.elem = new int[DEFAULT_SIZE];this.usedSize = 0;}/*** 指定容量* @param initCapacity*/public MyArrayList(int initCapacity) {this.elem = new int[initCapacity];this.usedSize = 0;}
}

2.3.2 順序表的實現

/*** 遍歷數組:建議使用的時候加上 this*/
public void display(){for(int i=0;i<this.usedSize;i++){System.out.print(this.elem[i]+" ");}System.out.println();
}
/*** 新增元素:默認放置到數組末尾*/
public void add(int data){if(isFull()){// 擴容this.elem = Arrays.copyOf(this.elem,this.elem.length*2);}this.elem[this.usedSize] = data;this.usedSize++;
}/*** 指定位置新增元素* @param pos* @param data*/
public void add(int pos,int data){// 前置:判斷 pos 位置是否合法if(pos<0 || pos>this.usedSize){throw new PosOutOfException(pos+"位置不合法!");}//1.如果容量滿,需要進行擴容;否則導致移動元素發生數組越界訪問if(isFull()){

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

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

相關文章

Linux518 YUM源倉庫回顧(需查)ssh 服務配置回顧 特定任務配置回顧

計劃配倉庫YUM源 為什么我在/soft文件夾下 使用yum install --downloadonly --downloaddir /soft samba 為什么文件夾下看不到samba文件 exiting because “Download Only” specified 計劃過 計劃配SSH 參考 ok了 計劃配置特定任務解決方案 code: 兩端先配好網絡 測試好s…

如何完美安裝GPU版本的torch、torchvision----解決torch安裝慢 無法安裝 需要翻墻安裝 安裝的是GPU版本但無法使用的GPU的錯誤

聲明&#xff1a; 本視頻靈感來自b站 如何解決所述問題 如何安裝對應版本的torch、torchvison 進入pytorch官網 進入歷史版本 這里以cuda11.8 torch 2.1.0為例演示 根據文檔找到要安裝的torch、torchvison版本 但不是使用命令行直接安裝 命令行直接安裝可能面臨著 安裝慢…

【iOS(swift)筆記-9】WKWebView無法訪問網絡

對于iOS 在info中添加App Transport Security Settings&#xff0c;然后在App Transport Security Settings里添加Allow Arbitrary Loadstrue 對于macOS 除了上面的操作&#xff0c;還需在項目信息的App Sandbox里有個Network打鉤選項

buck變換器的simulink/matlab仿真和python參數設計

什么是Buck電路? BUCK電路是一種降壓斬波器&#xff0c;降壓變換器輸出電壓平均值Uo總是小于輸出電壓UD。通常電感中的電流是否連續&#xff0c;取決于開關頻率、濾波電感L和電容C的數值。BUCK也是DC-DC基本拓撲&#xff0c;或者稱為電路結構&#xff0c;是最基本的DC-DC電路…

給個人程序加上MCP翅膀

背景 最近MCP這個詞真是到處都是&#xff0c;看起來特別高大上。我平時沒事的時候也一直在關注這方面的技術&#xff0c;知道它是怎么一回事&#xff0c;也懂該怎么去實現。但可惜一直抽不出時間來自己動手搞一個MCP服務。網上關于MCP的教程一搜一大把&#xff0c;但基本上都是…

AWS中國區CloudFront證書管理和應用指南

在AWS中國區使用CloudFront時,SSL/TLS證書的管理和應用是一個重要的環節。本文將詳細介紹如何在AWS中國區上傳、管理和應用SSL證書到CloudFront分配。 1. 準備證書文件 首先,我們需要準備好SSL證書相關的文件。通常,這包括: 私鑰文件(.key)公鑰證書文件(.crt)證書鏈文…

為什么hadoop不用Java的序列化?

Java的序列化是一個重量級序列化框架&#xff08;Serializable&#xff09;&#xff0c;一個對象被序列化后&#xff0c;會附帶很多額外的信息&#xff08;各種校驗信息&#xff0c;Header&#xff0c;繼承體系等&#xff09;&#xff0c;不便于在網絡中高效傳輸。所以&#xf…

Word壓縮解決方案

Word壓縮解決方案&#xff1a;基于圖片壓縮的 .docx 優化實踐 &#x1f4cc; 背景 在日常科研寫作或項目文檔整理中&#xff0c;Word 文檔&#xff08;.docx&#xff09;往往因為插入大量高清圖表、掃描圖像、公式圖等導致文件體積過大&#xff0c;或者畢業學位論文查重要求上…

基于基金凈值百分位的交易策略

策略來源&#xff1a;睿思量化小程序 基金凈值百分位&#xff0c;是衡量當前基金凈值在過去一段時間內的相對位置。以近一年為例&#xff0c;若某基金凈值百分位為30%&#xff0c;意味著過去一年中有30%的時間基金凈值低于當前值&#xff0c;70%的時間高于當前值。這一指標猶如…

數字人技術的核心:AI與動作捕捉的雙引擎驅動(210)

**摘要&#xff1a;**數字人技術從靜態建模邁向動態交互&#xff0c;AI與動作捕捉技術的深度融合推動其智能化發展。盡管面臨表情僵硬、動作脫節、交互機械等技術瓶頸&#xff0c;但通過多模態融合技術、輕量化動捕方案等創新&#xff0c;數字人正逐步實現自然交互與情感表達。…

基于OpenCV的實時文檔掃描與矯正技術

文章目錄 引言一、系統概述二、核心代碼解析1. 導入必要庫2. 輔助函數定義3. 坐標點排序函數4. 透視變換函數5. 主程序流程 三、完整代碼四、結語 引言 在日常工作和學習中&#xff0c;我們經常需要將紙質文檔數字化。手動拍攝文檔照片常常會出現角度傾斜、透視變形等問題&…

jenkins pipeline實現CI/CD

在企業級的架構中&#xff0c;CI/CD是必不可少的一個環節&#xff0c;它可以讓開發人員只關注于開發&#xff0c;而不必去關注項目的構建和部署&#xff0c;從而提高開發人員的效率。 本文我們來介紹一下使用jenkins 的pipeline來進行java項目的自動構建以及部署。我們通過腳本…

InfluxDB 3 Core + Java 11 + Spring Boot:打造高效物聯網數據平臺

一、 引言&#xff1a;為什么選擇InfluxDB 3&#xff1f; 項目背景&#xff1a; 在我們的隧道風機監控系統中&#xff0c;實時數據的采集、存儲和高效查詢是至關重要的核心需求。風機運行產生的振動、傾角、電流、溫度等參數是典型的時序數據&#xff0c;具有高并發寫入、數據…

泰國SAP ERP實施如何應對挑戰?工博科技賦能中企出海EEC戰略

泰國正依托"東部經濟走廊&#xff08;EEC&#xff09;"與RCEP協定疊加優勢&#xff0c;為中國企業提供面向亞太市場的戰略機遇。作為2022年泰國主要外資來源國之一&#xff0c;中國企業通過電子制造、智能家電、數據中心及新能源車等領域的投資深度參與泰國"4.0…

【設計模式】- 創建者模式

單例模型 餓漢式 靜態方法創建對象 public class Singleton {// 私有構造方法private Singleton(){}private static Singleton instance new Singleton();// 提供一個外界獲取的方法public static Singleton getInstance(){return instance;} }靜態代碼塊創建對象 public …

邏輯與非邏輯的彌聚

非邏輯彌聚與邏輯彌聚是復雜系統中兩種不同的信息整合方式。邏輯彌聚側重于通過明確的規則、規律和結構化方法&#xff0c;將分散的信息或功能進行有序的組織和集中處理&#xff0c;強調理性和確定性。而非邏輯彌聚則更多地涉及情感、直覺、經驗等非線性、非結構化的因素&#…

Linux進程信號(三)之信號產生2

文章目錄 4. 由軟件條件產生信號5. 硬件異常產生信號模擬一下除0錯誤和野指針異常除0錯誤野指針錯誤 總結思考一下 4. 由軟件條件產生信號 SIGPIPE是一種由軟件條件產生的信號,在“管道”中已經介紹過了。 軟件條件不就緒&#xff0c;很明顯這個軟件條件沒有直接報錯&#xff…

讀取18B20的問題,時鐘太慢了

使用MSP430&#xff0c;1M時鐘&#xff0c;在讀取18B20數據時&#xff0c;一直存在問題&#xff0c;使用邏輯分析儀讀取的數據也是莫名其妙&#xff0c;查看電路圖和器件也沒有發現問題&#xff0c;就這樣斷斷續續的卡了一周多。 今天忽然想把時鐘升一下試試&#xff0c;原來1…

第12章 Java多線程機制

12.1 進程與線程 4種狀態&#xff1a;新建、運行、中斷和死亡。 &#xff08;新建、運行、中斷和死亡&#xff09; 建立線程的兩種方法&#xff1a;用Thread類或其子類。 線程新建后&#xff0c;必須調用 start () 方法使其進入就緒隊列&#xff0c;才有機會獲得 CPU 資源&a…

利用 Amazon Bedrock Data Automation(BDA)對視頻數據進行自動化處理與檢索

當前點播視頻平臺搜索功能主要是基于視頻標題的關鍵字檢索。對于點播平臺而言&#xff0c;我們希望可以通過優化視頻搜索體驗滿足用戶通過模糊描述查找視頻的需求&#xff0c;從而提高用戶的搜索體驗。借助 Amazon Bedrock Data Automation&#xff08;BDA&#xff09;技術&…