我正在尝试初始化一个向量,该向量具有初学者字符串形式的整数1到n.
这是我对向量的声明.
Vector<String> candidatesSet,frequentItemSet,mFCandidatesSet,mFSet = new <String>Vector();
我用来初始化的循环是
for(int i=0; i<crows; i++)
{
candidatesSet.add(Integer.toString(i+1));
}
在这里,我们获得运行时变量crows的值.
但是它在我向对象添加字符串的行中抛出了NullpointerException.
我尝试将向量初始化为null
candidatesSet = null;
但这没用
解决方法:
首先,类似的东西是错误的:
Vector<String> set = new <String>Vector();
正确的语法是这样的:
Vector<String> set = new Vector<String>();
第二,如果您执行以下操作:
Vector<String> set1,set2,set3,set4,set5 = new Vector<String>();
…只有set5会被初始化.每个变量必须独立初始化.您可以执行以下操作:
Vector<String> set1,set2,set3,set4,set5;
set1 = set2 = set3 = set4 = set5 = new Vector<String>();
…但是所有变量都将指向同一个Vector,对一个变量的修改将影响所有其他变量.您必须分别初始化每个变量.
第三,这样做:
candidatesSet = null;
如果尚未初始化候选人集,则不会执行任何操作,因为非原始实例变量无论如何都将初始化为null.这就是您的问题,您正在对null对象调用.add(String),这会导致NullPointerException.
解决这些问题将使您的代码正常工作,但还有最后一个问题. Vector是有点过时的类,它已被Java Collections API取代.尝试使用ArrayList
代替Vector,如下所示:
List<String> candidatesSet = new ArrayList<String>();
这将使您的代码更高效,更简单.