ListListlistsnew ArrayListList泛型中的泛型

時間 2021-05-07 19:59:11

1樓:

list> lists = new arraylist>();

listlist=new arraylist();

for(int i=0;i<100;i++)lists.add(list);

for(list i:lists)

for(int i:list)

list集合使用泛型與不使用泛型有什麼區別?

2樓:匿名使用者

從list中取出的值不一樣,第一種的話取出來是object型別的,需要強制型別轉換,而第二個不用,取出來之後直接就是string型別的

3樓:海色石

泛型其實還有一個通俗的名字:引數化型別(使用引數指明瞭該傳什麼型別)。就是明確指定了執行期集合中物件的型別。

如果沒有泛型,那我一切的物件直接使用object和強制型別轉換就解決了不是嗎?但是這種有個問題,就是會在執行期出現隨處可見的強制型別轉換異常classcastexception。而指定了引數化型別,是不是我們在編譯期就進行檢查了,傳入list型別,list裡面只能放入string,你add其他型別編譯不會通過的,就不要提執行期檢查了。。。

所以你提泛型搞不懂就理解為引數化型別這個事就完事了

4樓:匿名使用者

顧名思義 泛型就是不指定型別 集合中 可以放各種型別的資料

而傳統集合 必須首先指定集合型別 比如 int型集合 只能放int str集合只能放str

就是這樣,泛型比較方便,而傳統的更加嚴謹

arraylist list = new arraylist() 和list list = new arraylist() 的區別??

5樓:瀋陽

第一種形式用當前類作為引用型別,那麼可以訪問到arraylist這個類中的所有公用方法。第二種形式,用arraylist實現的介面list作為引用型別,那麼通過list引用可以訪問到介面中定義的方法。也就是說arraylist這個類實現了list介面,除了要必須實現介面list中宣告的方法外,還可以實現額外的一些方法。

但是,第二種形式就無法呼叫的list介面以外的方法。

使用上,設計模式中有:「**儘量依賴於抽象,不依賴於具體」。第一種形式就是依賴具體,第二種形式就是依賴於抽象。

因為list是介面。**依賴於抽象的好處是,**可以方便替換。例如,**list list = new arraylist();下面通過list來操作集合。

**編寫後發現集合使用的不準確,應該使用linkedlist,那麼只要修改一行**list list = new linkedlist();就可以,這行以後的**不需要修改,因為list介面保證了呼叫的都是介面中的方法,而arraylist與linkedlist都實現了list介面。而如果當時用arraylist list = new arraylist()這種形式的話,那麼list訪問到的就可能是arraylist裡獨有的方法而非list介面中的方法。這樣替換成linkedlist的時候就有可能需要修改很多的**。

6樓:一口沒水的枯井

儲存內容的區別

arraylist 可以儲存任何型別的項

list《型別》 只可以儲存指定型別的項

使用是否方便

list<>比arraylist使用方便

因為在使用arraylist內部的值時,必須強制轉換才行

相信使用過arraylist的都深有體會,因為存放在arraylist裡的值都轉換成了object型別

出現的時間

arraylist比list<>出現的時間早

list<>是c#2.0時出現的,且是其最強大的功能之一

所在名稱空間的區別

arraylist的名稱空間是system.collections

list<>的名稱空間是system.collections.generic

其中generic是泛型的意思,使用list<>也就是在使用泛型技術

程式設計中的使用頻率

大多數情況下 arraylist可以廢棄不用,畢竟其是c#2.0之前的技術了

這一點從在visual studio中 新建一個類時便可以看出

新建一個類時,其預設使用的名稱空間有

using system;

using system.collections.generic;

using system.linq;

using system.text;

顯然沒有system.collections,因為arraylist的使用的確不方便

7樓:ǒ蒍禰變乖

list是一個介面,而arraylist 是一個類。 arraylist 繼承並實現了list。

list list = new arraylist();這句建立了一個arraylist的物件後把上溯到了list。此時它是一個list物件了,有些arraylist有但是list沒有的屬性和方法,它就不能再用了。而arraylist list=new arraylist();建立一物件則保留了arraylist的所有屬性。

為什麼一般都使用 list list = new arraylist() ,而不用 arraylist alist = new arraylist()呢?

問題就在於list有多個實現類,如 linkedlist或者vector等等,現在你用的是arraylist,也許哪一天你需要換成其它的實現類呢?,這時你只要改變這一行就行了:list list = new linkedlist(); 其它使用了list地方的**根本不需要改動。

假設你開始用 arraylist alist = new arraylist(), 這下你有的改了,特別是如果你使用了 arraylist特有的方法和屬性。 ,如果沒有特別需求的話,最好使用list list = new linkedlist(); ,便於程式**的重構. 這就是面向介面程式設計的好處

8樓:匿名使用者

list是介面 定義了一些方法 但是方法沒有被實現arraylist是一個類 實現了list這個介面list裡邊定義的方法 在arraylist裡邊都實現了同時list也可以被別的類所實現 例如vector, vector和arraylist對list定義的方法的實現就有所區別。

希望對你有用啊!

9樓:金城杞人

前一個可以使用arraylist獨有的方法。後面的只能呼叫list介面宣告的方法

10樓:匿名使用者

list是介面,arraylist是一個實現了list的具體類。

1是一個arraylist,所以可以用list變數訪問這個類的public成員和變數。

2是一個inte***ce,所以可以通過變數list訪問list介面上的方法,這個方法的具體實現這裡是通過一個arraylist的object實現的,這個list變數沒有public成員,只有介面定義的方法。

11樓:匿名使用者

arraylist list = new arraylist();

listlist = new arraylist();

區別在於,第二個

list定義了泛型的型別只能為string型別,所以第二個list只能儲存string型別的引數

C中什麼是泛型和泛型的集合,泛型和泛型集合的區別

list這種就是泛型 現在這裡只說一下我自己的理解.高手莫罵.這裡的t可以是使用者自己定義的型別.例如現在相要一個int泛型集合 我們只要使用list就行了使用string 泛型集合 我們只要使用list就行了其實泛型集合更重要的功能是可以存入使用者自定義的類了. 所謂泛型,即通過引數化型別來實現在...

C泛型方法,泛型約束問題

class templatewhere t new 這裡的 where t new 不需要,應該放在public static t createdataarray int length where t new 這裡 泛型方法 在c 2.0中,方法可以定義特定於其執行範圍的泛型引數,如下所示 publ...

C泛型的意義是什麼,C 中泛型的作用是什麼?

範型的意義在於免去了型別之間互相轉換的系統開銷,和同類方法的過載,比如,add方法你要過載兩個方法 int和double 或者更多方法,用範型只用寫一個add方法就可以完成int,double,float.等等的相加,再如,集合的操作,沒有往往是弱型別 object 而用範型可以直接是強型別,無需轉...