0

我正在尝试学习 Java,因为我是初学者,最近我摸索了 Java 中的向量和列表。这是一个非常简单和基本的问题,但任何帮助都会对学习者有所帮助。我创建了一个向量 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(i)。功能如下图:

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) 与字符串路径匹配。请分享你的知识。

非常感谢。

4

3 回答 3

2

如果没有泛型,v.get(i)将始终返回一个对象。这里有两种解决方法:

声明Vector

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

或者做

v.get(i).toString();

但在做之前v.get(i).toString(),应该对v.get(i).

于 2013-06-19T08:45:51.173 回答
0

尝试这个

for(int i=0,i<v.size(),i++){
    qlm("Write", "init",getList(),v.get(i).toString()); // Function call. 
    }
于 2013-06-19T08:45:05.387 回答
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
}

或者,因为 Vectors 是可枚举的,你可以这样做:

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,但它们是各种可用的列表,可以“所有已知的实现类”下找到。

要使用泛型和 ArrayList 重写您的示例,您可以这样做:

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

for(String s : myList){
    qlm("Write", "init", getList(), s);
}
于 2013-06-20T23:01:54.630 回答