什麼是創建時的區別這兩個對象差異的LinkedList,排隊VS列表
Queue<String> test = new LinkedList<String>();
和
List<String> test2 = new LinkedList<String>();
什麼是test
和test2
之間的實際差異?他們都是LinkedList
?是否存在性能差異或使用某一方的原因?
什麼是創建時的區別這兩個對象差異的LinkedList,排隊VS列表
Queue<String> test = new LinkedList<String>();
和
List<String> test2 = new LinkedList<String>();
什麼是test
和test2
之間的實際差異?他們都是LinkedList
?是否存在性能差異或使用某一方的原因?
您編寫的兩個語句構造一個LinkedList<String>
對象來存放一個字符串列表,然後將其分配給一個變量。區別在於變量的類型。
通過分配LinkedList<String>
Queue<String>
到類型的變量,則只能訪問在LinkedList
是在Queue<String>
接口,其包括用於排隊和出隊的元件支持可用的方法。如果您需要編寫一個使用隊列進行各種操作的程序,並希望通過使用鏈接列表來實現該隊列,這將非常有用。
通過分配LinkedList<String>
到List<String>
類型的變量,則只能訪問在LinkedList
是在List<String>
界面中可用的方法,這是用於保持元素的序列的正常操作。例如,如果您需要處理可隨時隨地增長和縮小的元素列表,這將非常有用。
總之,兩條線創建相同的對象,但打算以不同的方式使用它們。一個人說,它需要一個由鏈表支持的隊列,而另一個則表示它需要鏈接列表支持的一般元素序列。
希望這會有所幫助!
我覺得他們都是幾乎相同,只是你要公開的方法的類型。由於LinkedList實現了兩個接口,因此選擇其中一個接口可以訪問該接口類型的方法。
請看看這些鏈接的接口方法聲明
http://docs.oracle.com/javase/6/docs/api/java/util/Queue.html http://docs.oracle.com/javase/6/docs/api/java/util/List.html
我不知道有關的表現,雖然我猜到的對象實現是常見的它不應該是不同的。
在這兩種情況下,您正在實例化LinkedList
。
區別在於用於引用這些實例的變量的類型。
test
類型Queue
和test2
是List
類型。根據變量的類型,您只能調用在該特定類型上指定的方法。我認爲這對你的情況至關重要。
在性能方面,它將會是相同的,因爲您在兩種情況下使用的實際實現是相同的(LinkedList
)。
@ BheshGurung-你確定嗎?我很確定這兩個都是合法的Java代碼。 – templatetypedef 2013-03-25 05:10:33
他們不編譯,因爲他們缺少一個(),不是因爲分配將是非法的:) – Affe 2013-03-25 05:11:24
ok()已更正 – 2013-03-25 05:12:34