2014-09-25 76 views
0
import javax.swing.*; 
import java.util.*; 
import java.awt.*; 

public class ConverAryToList { 

    public static void main(String[] args) { 


     // TODO Auto-generated method stub 

     String[] stuff = { "people ", "watermelon ", "melons ", "fudge " }; 
     List<String> list = new java.util.LinkedList<String>(
       Arrays.asList(stuff)); 


     list.add("pumpkin"); 
     list.addFirst("first"); 

     stuff = list.toArray(new String[list.size()]); 

     for (String x : stuff) 
      System.out.printf("%s", x); 

    } 

} 

這是一個添加元素到列表的簡單練習。 On list.addFirst我得到:方法addFirst(String)對於類型列表未定義。我哪裏做錯了?我在.addFirst方法上遇到錯誤,爲什麼?

+1

您認爲錯誤的含義是什麼?它可能意味着什麼? – 2014-09-25 14:09:11

+0

如何定義方法.add,並且addFirst不是?這可能不是一個高級問題,但我在這裏錯過了一些東西,我真的沒有想法。 – Dimoff 2014-09-25 14:10:50

+1

你在做假設。不要這樣做。參考javadoc。 – 2014-09-25 14:11:45

回答

2

你的引用類型是List<T>接口,不申報任何addFirst方法。

你可以明確地設置參考類型LinkedList<String>

LinkedList<String> list = new LinkedList<String>(
       Arrays.asList(stuff)); 

或者你可以施放:

((LinkedList<String>)list).addFirst("first"); 

第一個方法是首選。

鑄造稍微更「危險」,因爲它假定您的參考沒有被分配一個新的值。

例如,如果您在上述兩個語句之間指定了listnew ArrayList<String>();,那麼在運行時會得到ClassCastException

+0

如果照你說的那樣做,我得到一個LinkedList類型不是通用的;它無法使用LinkedList類型的參數進行參數化。 – Dimoff 2014-09-25 14:37:13

+0

@nosille沒有意義。檢查你的進口。 'java.util.LinkedList' **是一個泛型類型。 – Mena 2014-09-25 14:40:59

1

方法addFirst存在於類LinkedList上,而不是在接口List上。

這裏:

List<String> list = //whatever 

list被視爲List,而不是一個LinkedList

將其更改爲:

LinkedList<String> list = //whatever 
0

LinkedList實現兩個接口:ListDeque。 方法addFirstDeque接口中聲明。

Deque list = new LinkedList<Number>(); 
list.addFirst(3); 
相關問題