【发布时间】:2018-03-31 02:34:49
【问题描述】:
我想创建一个通用方法来将两个链表的副本附加在一起并将其放入另一个链表中。在列表 c 中列出 a 和列表 b。
这是我目前的代码。
public static LinkedSequence<?> concatenaton(LinkedSequence<?> s1, LinkedSequence<?> s2) throws java.lang.NullPointerException
{
// Create a new sequence that contains all the elements from one sequence followed by another.
LinkedSequence<?> concat = new LinkedSequence();
if(s1 == null || s2 == null) {
return null;
}
else {
LinkedSequence h1;
LinkedSequence h2;
h1 = s1.clone();
h2 = s2.clone();
concat.addAll(h1);
concat.addAll(h2);
}
return concat;
}
public LinkedSequence<T> clone() {
// Generate a copy of this sequence.
LinkedSequence<T> copy = new LinkedSequence<T>();
//Node<T> newNode = new Node<T>(element);
Node<T> curr = first;
if(getCurrent() == null) {
return null;
} else {
while(curr != null) { //iterate through current list
copy.addLast(curr.getValue());
curr = curr.getLink();
}
}
return copy;
}
public void addLast(T element) {
Node<T> newNode = new Node<T>(element);
if (isCurrent() == false) {
current = newNode;
first = newNode;
last = newNode;
}
else {
//Node newNode = new Node(element);
last.setLink(newNode);
last = newNode;
}
}
克隆将整个列表复制到一个新列表中。 我不断收到错误消息,说我在静态类型中创建了泛型类型。
【问题讨论】:
-
请分享确切的错误日志
-
@AmanChhabra 错误是“无法对非静态类型 T 进行静态引用”
-
你应该能够做到这一点,而无需克隆,只需遍历第一个链表的末尾并指向第二个链表的开头。
标签: java generics linked-list generic-list