一.順序表的概念🙉
🐱順序表是一段物理地址連續的儲存單元,一次儲存數據元素的線性結構。一般情況下采用數組儲存,和數組的增刪查改類似。
但是順序表和數組還是有區別的比如,數組按照是否可以擴容可以分為,靜態順序表和動態順序表。
靜態順序表,就是順序表的儲存容量是不變的;動態順序表,就是當順序表的容量滿了的時候可以自動擴容。
二.順序表的實現🐱
1.創建順序表🐱
剛剛有提到順序表的儲存邏輯和數組差不多所以我們只需要在內部定義一個數組和記錄容量大小的UsedSize即可。(為了之后方便使用這里使用的是泛型(傳入什么類型就是什么類型),如果不理解泛型的這里可以直接把T當作int來看,不影響)
UsedSize:順序表內實際存儲的數據長度(不是順序表內存大小)
2.判斷順序表是否為空🐱
因為后面會用到較多,所以我們先來寫這個方法,其實順序表內很多方法都很簡單,比如下面這個
我們只需要判斷順序表中存儲數據的數量是否和順序表的內存大小是否相同即可
3.指定位置添加數據*🐱
在添加數據之前我們要先看一看,順序表是否已經滿了,如果滿了就擴容(直接使用copyOf)。接下來開始添加,既然要指定位置添加數據那么原來的數據順序肯定不能變而且被指定的位置肯定還要是可覆蓋的,我們直接讓那個位置以后的數據都向后移動一步就行,然后用要添加的數據直接覆蓋掉那個位置就行。(指定的位置要合法)
4.檢查范圍🐱
檢查傳進來的位置是否合法,方便之后方法的實現
5.刪除數據🐱
這個方法也是十分的簡單的呢!只需要檢查一下位置是否合法,然后直接覆蓋掉指定位置就行了。看是不是,輝常簡單😉😉
6.查找指定數據🐱
只需要遍歷順序表一一對比就行然后返回下標
7.刪除第一次出現的數據🐱
要刪除某個數據,我們就要先找到這個數據,這里直接使用我們剛剛實現的Find方法就可以了!找到之后直接刪掉這個位置的數據就行,到這里我們的順序表基本快實現完了,是不是感覺just so so
8.獲取長度和清空順序表🐱
清空順序表只需要將UsedSize置為0就好
到這里我們的順序表就實現完了,但是Java中的順序表還有很多方法有興趣的小伙伴可以自己去實現一下。
三.順序表的使用🦊
順序表的使用方法比較簡單直接創建一個對象就行這里就不多做贅述了
我們來看一看Java中提供了順序表的哪些方法
//這些方法大部分都很好理解,如果有興趣的小伙伴可以自己試著實現一些😊,不過對于sublist這個方法你可能會有些疑問,截取部分list具體是怎么回事呢?
它的具體作用是返回一個順序表,這個順序表是原來的順序表的一部分,具體的范圍是[fromIndex,toIndex)下標位置的數據。我們來看一個例子
//這里改了list?3,結果list?1也跟著改了,是因為,sublist方法,并不是返回一個新的數組,而是返回原來數組的sublist的方法的第一個參數下標處的地址也就是返回1下標處的地址,還是在對同一個數組操作
四.順序表的打印🐭
順序表的打印方法一般有一下幾種:
1 sout,
2 for,
3 foreach
4迭代器
這里重點來聊聊迭代器(Integer)(具體內容我直接寫在代碼注釋里了)
🙉到這里順序表的內容就聊完了,如果你還有什么疑問🤔🧐或者不同的見解歡迎在下方評論或私信小編,最后也希望可以支持一下小編啦!!!🥰🥰