我尝试制作通用链表。
使用<T extends Comparable <T>>
的此链接列表的节点。但是当我使用
LList<LList<Integer>> linkedlist = new LList<LList<Integer>>();
创建一个新实例,有一个错误:
Multiple markers at this line
- Bound mismatch: The type LList<Integer> is not a valid substitute
for the bounded parameter <T extends Comparable<T>> of the type LList<T>
- Bound mismatch: The type LList<Integer> is not a valid substitute
for the bounded parameter <T extends Comparable<T>> of the type
我该如何解决这个问题?
<小时/> 节点类:
public class Node <T extends Comparable <T>> {
// Members:
public T data;
public Node <T> next;
// Methods:
public Node () {
data =null;
next = null;
}
public Node (T data) {
this.data = data;
next = null;
}
}
LList课程:
public class LList <T extends Comparable <T>> {
// Members:
public Node <T> head;
// Methods:
public LList () {
head = null;
}
// Add node.
public void addNode (T data) {
if (head == null) {
head = new Node <T> (data);
return;
}
Node <T> newNode = new Node <T> (data);
Node <T> tempNode = head;
while (tempNode.next != null) tempNode = tempNode.next;
tempNode.next = newNode;
}
// Show linked list.
public void showLLForInteger () {
if (head == null) return;
Node <T> tempNode = head;
while (tempNode != null) {
System.out.print(String.format("%-6d", tempNode.data));
tempNode = tempNode.next;
}
System.out.println();
}
}
答案 0 :(得分:1)
为什么要求T extends Comparable<T>
?你似乎没有在任何地方使用它。
由于您需要T extends Comparable<T>
,这意味着列表的参数必须与自身相当。 LList<LList<Integer>>
不起作用,因为LList<Integer>
与自身无法比较(它不会扩展Comparable<LList<Integer>>
)。您确定不只是想要LList<Integer>
吗?
答案 1 :(得分:0)
LList<T extends Comparable>
所以LList
只接受将Comparable扩展为类型参数的类。
LList <LList<Integer>> subArrsList = new LList <LList<Integer>>();
在此语句中,您将LList<Integer>
类作为类型参数。 LList<Integer>
未延伸Comparable
。
整数扩展可比,但您没有使用Integer类作为类型参数,您使用的LList不会扩展Comparable。
所以你得到一个错误。
按如下方式更改LList
课程:
public class LList <T extends Comparable <T>> implements Comparable<LList<T>>{
@Override public int compareTo(LList<T> list) {
//to do
}
...// your code
}