List子類和父類的區別和作用

2021-09-23 02:01:38 字數 1603 閱讀 4289

當資料多的時候,則採用物件的方式來設定值;但當物件多的時候,則採用集合也就是list或他的「兄弟」set來存物件;而獲取資料,則需要用到他倆的父類(collection)裡的內部類( iterator )來獲值,對於list也可以使用自己實現的listiterator來獲值,set則沒有;listiterator可以看作是iterator的公升級版。

對於list,因為他是有序,元素可以重複 ,該集合體系有索引的,所以他的子類都有他的這些優點,但三個子類中arraylistvector是有連續下標的,但另乙個子類linkedlist並沒有,下面來介紹這三個子類:

arraylist

arraylist擁有特有的方法,他部分發方法比如add(),remove(),set(),get()都可以根據下標(index)來進行操作。

arraylist也有特殊的迭代器(listiterator),相比於父類(list)的迭代器(lterator)區別在於listlterator多了幾個可以根據index進行操作的方法:

arraylist優點是 查詢快,因為是可以根據下標進行查詢的且執行緒不同步,但隨著而來的缺點,就是增刪慢,因為如果增加乙個元素到中間,那麼下標在他之後的元素都得更改下標,刪除也是乙個道理,所以他的缺點總體來講就是進行增刪時會影響到其他元素,從而拖慢速度。

arraylist的增長因子為1.5,初始大小為10。增長因子也就是:當定義了乙個arraylist陣列長度時裡面的資料達到最大值時,陣列擴大的倍數。若乙個arraylist定義為50;當超出這個範圍時,他擴大1.5倍,也就是75。

vector

vector相對於其他陣列不同的地方,他的特點就是擁有列舉。列舉就好比迭代器一樣,也是可以進行便利的。相比於arraylist他的執行緒是同步的且他的增長因子為2.0,初始值也是10。

上面提到過,linkedlist作為list的子類,和另外兩個陣列不同的是沒有連續下標,因為他是鍊錶結構,何為鍊錶,也就是每個元素是通過記住前乙個元素和記住後乙個元素來判斷位置的,這種方式的優點是增刪快,因為不需要影響到其他元素,但缺點是查詢比較慢,因為他需要乙個乙個的去排查每個元素來查詢。

作為乙個特有的鍊錶結構,他也有特有的方法,addfirst()和addlast();

可以使用這兩個方法建立兩個儲存結構:堆疊儲存結構和佇列儲存結構。

堆疊結構特點:先進後出,也就是先增加的乙個元素排在最後。

佇列結構特點:先進先出,先增加的乙個元素排在第一位。

而在jdk1.6版本則用offerfirst()和offrelat()替換了這兩個方法。

Python子類和父類

寫過程式的都知道類,就是物件導向的意思,程式設計的水平大致分為幾個層次,基本語法,函式,物件導向,資料結構,架構,越往上水平越高。在建立類的時候,我們通常把具有相關性的函式包裝為乙個類,類也可以巢狀,叫父類和子類,尤其在python中,所有的物件都可以當成乙個variable,下面給出乙個類巢狀的例...

C 父類和子類之間的轉換

學c 的時候有時候會對類型別之間的轉換感覺到些許的迷惑,下面記錄一點點理解和認識 首先需要明白一點 只有子類轉換成父類,父類不可能轉換成子類。因為子類是從父類繼承而來,子類中包含父類中所有成員。而如果父類可以轉換成子類,意味著將子類中將有一部分是未知的成員。這是不被允許的。在子類轉換成父類的時候,也...

父類指標和子類指標的步長

include stdafx.h include using namespace std class father virtual void print private int a class son public father virtual void print intmain int i fo...