Java 系统打印到linkedList的某个索引

Java 系统打印到linkedList的某个索引,java,linked-list,nodes,Java,Linked List,Nodes,目前我正在使用java,我正试图找到一种方法,在达到linkedList的某个索引后停止向控制台打印(为简单起见)。任何解释这一点的帮助都将不胜感激。 下面是用于创建列表的节点类: protected Integer data; protected Node link; public Node(Integer data, Node link) { this.data = data; this.link = link; } public Node addNodeAfter(In

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

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 (StackOverflowError e) {
        // System.err.println("shit happened here");
    }
    return msg;
}

public Integer getData() {
    return data;
}

public Node getLink() {
    return link;
}

创建一个方法
toString(inti)
,该方法以仍需打印的元素数作为参数。如果参数大于零且存在有效链接,则递归调用
toString(i-1)
方法,并将
i
减少1:

代码:

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;
    }
}

您需要扩展LinkedList类并重写toString()方法,然后使用子类

大概是这样的:

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);
    }
}
公共类MyLinkedList扩展LinkedList{
@凌驾
公共字符串toString(){
StringBuffer out=新的StringBuffer(“[”);
对于(int i=0;i<3;i++){
append(get(0.toString());
out.追加(“”);
}
return out.toString();
}
}
然后像这样测试它:

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);
    }
}
公共类主{
公共静态void main(字符串[]args){
LinkedList myList=新建MyLinkedList();
我的清单。添加(“一”);
myList.添加(“两个”);
myList.添加(“三”);
myList.添加(“四”);
System.out.println(myList);
}
}

如果您提供代码或堆栈跟踪,则更容易指导您。我编辑了我的文章,因此提供了my Node类。请尝试此操作并与我们联系:
String-toString(int-index){…}
,递归调用将是
link.toString(index-1)
。非常感谢,这非常有助于纠正错误。我更希望看到
数据。toString()
而不是
“+data
非常感谢,非常有效!先生/女士!您有我的斧头!@user3688675如果Neils对您的问题的回答令您满意,您应该接受他的回答(即单击复选标记)。@PaulHanbury(这里有点新)谢谢你的建议!行吗