通用数组创建和空指针错误

时间:2014-06-13 14:22:33

标签: java arrays nullpointerexception

我有一个链表列表,它与一个有序的对象数组并行运行。如果在对象数组中输入了一个额外的元素,我需要在链表中的同一空格中插入一个额外的元素。 我有这个方法如下

public static LinkedList<User>[] insertElement (LinkedList<User>[]a, int index, User friend) {
  LinkedList<User>[] bp = new LinkedList[nElems];

  for (int i=0; i<index; i++){
     bp[i]=a[i-1];
  }
   //index is the position in which i want to insert a new element
   bp[index].add(friend);

  for (int i=index+1; i<a.length; i++){
    bp[i]=a[-1];
  }
  return bp;
}

如图所示初始化bp时,我得到一个空指针错误

初始化为:

LinkedList<User>[] bp = new LinkedList<User>[nElems];

我收到通用数组创建错误。什么是正确的初始化方法?

3 个答案:

答案 0 :(得分:0)

您已创建了一个链接列表数组,但尚未在数组中创建任何LinkedList

在尝试使用之前,您需要在数组的每个插槽中创建列表。

这似乎不太可能是你实际上想要做的事情......你似乎在混淆ArrayList。实际上你应该使用CollectionArray s,而不是将两者混合在一起。

答案 1 :(得分:0)

这一行:

LinkedList<User>[] bp = new LinkedList[nElems];

..创建一个对LinkedList<User>的空引用数组。您必须在使用它们之前初始化它们:

LinkedList<User>[] bp = new LinkedList[nElems];

for (int i = 0; i < nElems; i++) {
    bp[i] = new LinkedList<User>();
}

答案 2 :(得分:0)

我想你要做的是拥有一个有序的用户列表。如果是这种情况,您只需拥有LinkedList并使用

即可
LinkedList<String> users = new LinkedList<>();
users.add( index, friend );

LinkedList.add会自动将所有元素移到右侧。