我有一个链表列表,它与一个有序的对象数组并行运行。如果在对象数组中输入了一个额外的元素,我需要在链表中的同一空格中插入一个额外的元素。 我有这个方法如下
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];
我收到通用数组创建错误。什么是正确的初始化方法?
答案 0 :(得分:0)
您已创建了一个链接列表数组,但尚未在数组中创建任何LinkedList
。
在尝试使用之前,您需要在数组的每个插槽中创建列表。
这似乎不太可能是你实际上想要做的事情......你似乎在混淆Array
和List
。实际上你应该使用Collection
或Array
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
会自动将所有元素移到右侧。