2011-04-15 13 views

回答

5

是的,如果你施放到LinkedList

((LinkedList) col).addFirst(..) 

但這氣餒,因爲你總是不知道具體類型的集合。您可以使用instanceof進行檢查,但這不是面向對象的代碼。如果你真的需要一個LinkedList,需要LinkedList(而不是Collection

+0

不鼓勵,但在這種情況下確實很必要,因爲即使'List'沒有'addFirst',只有'LinkedList'。 – 2011-04-15 18:55:23

+0

是的,有時這是必要的 - 萬一有太多的先決條件,你就是不能改變設計 – Bozho 2011-04-15 18:56:29

+0

我同意丹尼爾 - 它應該是灰心。如果他必須調用addFirst(),他應該爲col1使用LinkedList類型。 – lobster1234 2011-04-15 18:59:55

3

如果一個變量聲明爲收藏,這意味着你通常打算考慮這個變量,在程序的其餘部分,作爲一個簡單的集合,而不是作爲鏈表。 Collection接口提供的方法應該足夠用於使用此變量的程序的其餘部分。

如果您需要訪問僅存在於LinkedList類中的特定方法,則該變量應該聲明爲LinkedList。

1

我不確定爲什麼你需要在這種情況下使用集合,但是如果你使用接口java.util.Deque,但你仍然可以「編程到接口而不是實現」也擴展java.util.Collection的

Deque<String> deque = new LinkedList<String>(); 
deque.addFirst("Hello"); 
Collection<String> collection = deque; 
+0

+1「Deque」.. – Bozho 2011-04-15 19:04:31

2

如果使用列表,而不是收藏,那麼。新增()方法是可用的。在索引0處添加將其置於第一位置。

list.add(0, object)