2013-03-25 62 views
20

什麼是創建時的區別這兩個對象差異的LinkedList,排隊VS列表

Queue<String> test = new LinkedList<String>(); 

List<String> test2 = new LinkedList<String>(); 

什麼是testtest2之間的實際差異?他們都是LinkedList?是否存在性能差異或使用某一方的原因?

+0

@ BheshGurung-你確定嗎?我很確定這兩個都是合法的Java代碼。 – templatetypedef 2013-03-25 05:10:33

+1

他們不編譯,因爲他們缺少一個(),不是因爲分配將是非法的:) – Affe 2013-03-25 05:11:24

+0

ok()已更正 – 2013-03-25 05:12:34

回答

33

您編寫的兩個語句構造一個LinkedList<String>對象來存放一個字符串列表,然後將其分配給一個變量。區別在於變量的類型。

通過分配LinkedList<String>Queue<String>到類型的變量,則只能訪問在LinkedList是在Queue<String>接口,其包括用於排隊和出隊的元件支持可用的方法。如果您需要編寫一個使用隊列進行各種操作的程序,並希望通過使用鏈接列表來實現該隊列,這將非常有用。

通過分配LinkedList<String>List<String>類型的變量,則只能訪問在LinkedList是在List<String>界面中可用的方法,這是用於保持元素的序列的正常操作。例如,如果您需要處理可隨時隨地增長和縮小的元素列表,這將非常有用。

總之,兩條線創建相同的對象,但打算以不同的方式使用它們。一個人說,它需要一個由鏈表支持的隊列,而另一個則表示它需要鏈接列表支持的一般元素序列。

希望這會有所幫助!

3

在這兩種情況下,您正在實例化LinkedList

區別在於用於引用這些實例的變量的類型。

test類型Queuetest2List類型。根據變量的類型,您只能調用在該特定類型上指定的方法。我認爲這對你的情況至關重要。

在性能方面,它將會是相同的,因爲您在兩種情況下使用的實際實現是相同的(LinkedList)。