2012-07-18 37 views
1

我正在爲Android開發,想知道ArrayList和List之間的主要區別是什麼?我應該使用ArrayList <?>或列表<?>

+2

你看過他們各自的文件嗎?這應該立即回答這個問題。 – 2012-07-18 12:28:48

+0

@KonradRudolph我不認爲這是真的,對於不瞭解接口等的人來說,文檔看起來像任何其他類。 – 2012-07-18 12:34:36

+0

@Jon好吧,如果你不知道接口,那麼整個討論都是無關緊要的。 – 2012-07-18 12:35:32

回答

3

爲了處理Java中的對象集合,已經提供了Collection接口。這在java.util package可用。

「列表」是一個接口,它擴展了集合接口,提供某種額外方法而不是集合接口來處理集合。其中「ArrayList」是「List」接口的實際實現。

ArrayList類除了列表接口中的可用方法外,還只有幾種方法。這裏沒有太大的區別。唯一的區別是,您正在創建第一個父接口的引用,以及第二個實現List的類的引用(即ArrayList類)。如果你使用第一個,你將能夠調用List接口中可用的方法,並且不能調用ArrayList類中可用的新方法。如果使用第二個方法,則可以自由使用all ArrayList中可用的方法。

編輯:

在Java應用程序的開發,當你應該通過集合框架對象作爲參數傳遞給方法,那麼最好是去與

List tempList = new ArrayList(); 
somemethodcall(tempList); 

,因爲在未來由於性能限制,如果您要更改實現以使用鏈表或其他實現List接口的類而不是ArrayList,則只能在實例化部分的一個點(即)處更改。否則,你應該改變所有的領域,你曾經使用特定的類實現作爲方法參數。

1

ListArrayList實現的接口。如果您嘗試創建某種方法需要某種類型的List,但您不打擾實際使用的實現方式,請使用List

如果你實際上是一個類實例化,那麼你必須選擇List其中之一的一些實施ArrayList

List<String> l1 = new ArrayList<String>(); 

將是一個例子。

無法實例的接口,因此會得到一個錯誤,如果你想做到以下幾點:

List<String> l2 = new List<String>(); 
+0

我相信這是一個接口。 – 2012-07-18 12:31:45

+0

@Benito Lol我編輯過,我累了,寫了錯誤的東西:) – 2012-07-18 12:32:35

0

上有wikipedia有關,其中ArrayList中被稱爲「動態數組」的好文章。
如果您正在嘗試優化您的應用程序,則應該查看文章旁邊的表格。

2

user370305給出了一個確切的解釋。這也可以幫助您瞭解Java中的集合層次結構。

collections hierarchy

相關問題