向向量中添加值时抛出NullPointerexception

时间:2012-06-13 00:24:36

标签: java memory-management vector nullpointerexception

我正在尝试初始化一个向量,该向量以字符串的形式包含整数1到n。

这是我对载体的声明。

 Vector<String> candidatesSet,frequentItemSet,mFCandidatesSet,mFSet = new <String>Vector();

我用来初始化的循环是

for(int i=0; i<crows; i++)
        {
           candidatesSet.add(Integer.toString(i+1));
        }

这里我们得到变量crowsduring runtime的值。

但它在我向对象添加字符串的行中抛出了NullpointerException。

我尝试通过

将向量初始化为null
 candidatesSet = null;

但它没有用

2 个答案:

答案 0 :(得分:2)

尝试

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

添加元素之前

答案 1 :(得分:2)

首先,类似的事情是错误的:

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;

...如果candidatesSet尚未初始化,则不执行任何操作,因为非原始实例变量无论如何都被初始化为null。那是你的问题,你在一个空对象上调用.add(String),这就是一个NullPointerException

修复这些问题会使您的代码工作,但还有最后一个问题。 Vector是一个有点过时的类,它已被Java Collections API取代。尝试使用ArrayList代替Vector,如下所示:

List<String> candidatesSet = new ArrayList<String>();

这将使您的代码更高效,更少陈旧。