我正在尝试学习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))与String Paths匹配。请分享您的知识。
非常感谢。
答案 0 :(得分:2)
如果没有Generics,v.get(i)
将始终返回一个对象。以下是解决问题的两种方法:
将Vector
声明为
Vector< String > v = new Vector< String > ();
或者做
v.get(i).toString();
但在执行v.get(i).toString()
之前,应在v.get(i)
上执行空检查。
答案 1 :(得分:0)
试试这个
for(int i=0,i<v.size(),i++){
qlm("Write", "init",getList(),v.get(i).toString()); // Function call.
}
答案 2 :(得分: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
}
或者,因为Vector是可枚举的,所以你可以这样做:
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.
}
话虽如此,你真的不应该再使用Vector了。它们已经很老了,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);
}