2013-06-19 56 views
0

我想學習Java,因爲我是初學者,最近我對Java中的Vectors和Lists感到失望。這是一個非常簡單和基本的問題,但任何幫助對學習者都會有幫助。 我已經創建了一個向量v,如下所示:匹配矢量中的參數

public vector createVector(){ 
    Vector v = new Vector(); 
    v.add(Path1); //Path1 is the path of a directory 
    v.add(Path2); 
    return v; 
} 

我在我傳遞一個函數,該參數中的一個是v.get(ⅰ)。功能如下所示:

for(int i=0,i<v.size(),i++){ 
    qlm("Write", "init",getList(),**v.get(i)**); // Function call. 
} 

函數聲明:

Void qlm(String Option, String init, List lists, **String paths**){ 

} 

我不能夠在函數調用這是v.get(i)與路徑字符串參數相匹配。請分享你的知識。

非常感謝。

+3

爲什麼在2013年使用'VECTOR'?沒有泛型啓動。這是一些遺留代碼或什麼? – fge

+0

你想要多個路徑嗎?你的問題不清楚 – fge

+2

「*我正在學習Java,因爲我是初學者,最近我對Vector *」摸索 - 「找到一本新書/網站/老師來學習語言:你的代碼顯着過時(參見fge's評論)。 – assylias

回答

0

試試這個

for(int i=0,i<v.size(),i++){ 
    qlm("Write", "init",getList(),v.get(i).toString()); // Function call. 
    } 
2

沒有泛型,v.get(i)總是會返回一個對象。這裏有兩種方法來解決這個問題:

申報Vector作爲

Vector<String> v = new Vector<String>(); 

或做

v.get(i).toString(); 

但做v.get(i).toString()之前,空檢查應在v.get(i)進行。

+1

您可以編輯您的答案,而不是在評論中添加信息。 –

+0

@Darshan我試過了。但結果仍然相同 –

+0

您能分享您嘗試過的方法以及您發現錯誤的位置嗎? –

0

通常,在Java中,當有人聲明Vector時,他們將使用Generics聲明它。要聲明一個Vector將包含字符串,你會這樣寫:

Vector<String> myVector = new Vector<String>(); 

然後,爲了獲得一個疊代的價值觀,你可以這樣做:

for(int i = 0; i < myVector.size(); i++){ 
    String s = myVector.get(i); // The get() method here returns a String instead of Object 
} 

,或者因載體是枚舉,你可以這樣做:

for(String s : myVector){ 
    // There is now a variable named s available in the loop that 
    // will contain each element in the vector in turn. 
} 

這就是說,你真的不應該再使用向量。它們非常古老,Java中有更好的列表。我建議你使用ArrayList,但是它們有很多可用的列表,可以在「所有已知的實現類」下找到here

要使用泛型和一個ArrayList重寫你的榜樣,你可以這樣做:

List<String> myList = new ArrayList<String>(); 
myList.add(Path1); 
myList.add(Path2); 

for(String s : myList){ 
    qlm("Write", "init", getList(), s); 
}