我从头开始实现自己的java.util.linkedlist,所以我没有使用任何java.util.linkedlist功能。话虽这么说,我目前正在尝试创建自己的toString方法。这是我的节点类
private static class Node<T>{
private T data;
private Node<T> next;
public Node(T d){
next= null;
data = d;
}
public Node(T d, Node<T> n){
data = d;
next = n;
}
public T getData(){
return data;
}
public void setData(T d){
data = d;
}
public Node<T> getNext(){
return next;
}
public void setNext(Node<T> n){
next = n;
}
}
这是我的listclass
private Node<T> start;
private int size;
public ListNoOrder() {
start = null;
size = 0;
}
public void add(T newElt) {
Node<T> temp = new Node<T>(newElt);
Node<T> current = start;
try{ if (newElt==(null));}
catch (Exception illegalArgumentException){
throw new IllegalArgumentException();}
if (start == null){
start = new Node<T>(newElt, null);
}
if(current != null){
while (current.next != null){
current.setNext(temp);
}
}
size++;
}
public int length() {
return size;}
到目前为止和我的toString方法
public String toString() {
String toPrint = "";
Node <T> current = start;
while (current != null){
toPrint += current.getData();
if (current.next != null)
toPrint += " ,";
current = current.getNext();
}
return toPrint;
}
当我测试方法时,它只打印列表的第一个元素。
mockList = 7,8,15,62,38,3 whatItsPrinting = 7,
我已经挣扎了几个小时。
答案 0 :(得分:2)
在add
方法中,您只需在此处设置start
变量
start = new Node<T>(newElt, null);
但您从未设置下一个节点,因为next
的{{1}} null ,因此以下条件永远不会为真
start
即使这种情况属实,也不会真正奏效 - 你需要做的是获得最后节点(没有if(current != null){
while (current.next != null){ // this one!
current.setNext(temp);
}
}
的节点,并且只设置它next
1}})。像
next