【问题标题】:Generic Array creation and null pointer errors通用数组创建和空指针错误
【发布时间】:2014-06-13 14:22:32
【问题描述】:

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

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];

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

【问题讨论】:

  • 我认为您尝试在第二个 for 循环 bp[i] = a[-1]; 中对数组进行索引是拼写错误?

标签: java arrays nullpointerexception


【解决方案1】:

这一行:

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

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

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

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

【讨论】:

    【解决方案2】:

    您已经创建了一个链表数组,但尚未在该数组中创建任何LinkedLists。

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

    这似乎不太可能是您实际尝试做的事情……您似乎混淆了Arrays 和Lists。确实,您应该使用Collections 或Arrays,而不是将两者混用。

    【讨论】:

      【解决方案3】:

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

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

      LinkedList.add 自动将所有元素向右移动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-31
        • 2011-04-23
        相关资源
        最近更新 更多