Java 系统打印到linkedList的某个索引
目前我正在使用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
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(这里有点新)谢谢你的建议!行吗