系统打印到链表的某个索引

System printing to a certain index of a linkedList

我目前正在与 java 合作,我正在尝试找到一种在达到 linkedList 的某个索引后停止打印到控制台(为简单起见)的方法。任何解释这一点的帮助将不胜感激。 下面是我用来创建列表的节点 class:

protected Integer data;
protected Node link;

public Node(Integer data, Node link) {
    this.data = data;
    this.link = link;
}

public Node addNodeAfter(Integer element) {
    return link = new Node(element, link);
}

public String toString() {
    String msg = "";
    try {
        if (link == null) {
            msg = data + " null in tail";
        } else {
            msg = data + ", " + link.toString();
        }
    } catch (WhosebugError e) {
        // System.err.println("shit happened here");
    }
    return msg;
}

public Integer getData() {
    return data;
}

public Node getLink() {
    return link;
}

创建一个方法toString(int i),它将仍然需要打印的元素数量作为参数。如果参数大于零且存在有效的link,则递归调用toString(i - 1)方法,i减一:

代码:

public class Node {
    public static void main(String[] args) {
        Node linkedList = new Node(1, null);
        Node node = linkedList;
        for (int i = 2; i < 10; ++i)
            node = node.addNodeAfter(i);
        System.out.println(linkedList.toString(5));
    }

    public String toString(int i) {
        if (i > 0) {
            if (link == null)
                return data.toString();
            else
                return data.toString() + " " + link.toString(i - 1);
        } else
            return "";
    }

    protected Integer data;
    protected Node link;

    public Node(Integer data, Node link) {
        this.data = data;
        this.link = link;
    }

    public Node addNodeAfter(Integer element) {
        return link = new Node(element, link);
    }

    public Integer getData() {
        return data;
    }

    public Node getLink() {
        return link;
    }
}

输出

1 2 3 4 5

您需要扩展 LinkedList class 并覆盖 toString() 方法,然后使用您的子class.

像这样:

public class MyLinkedList<E> extends LinkedList<E> {

    @Override
    public String toString() {
        StringBuffer out = new StringBuffer("[");
        for (int i=0; i < 3; i++) {
            out.append(get(0).toString());
            out.append(" ");
        }
        return out.toString();
    }
}

然后像这样测试它:

public class Main {
    public static void main(String[] args) {
        LinkedList<String> myList = new MyLinkedList<String>();
        myList.add("one");
        myList.add("two");
        myList.add("three");
        myList.add("four");

        System.out.println(myList);
    }
}