[英]Java Printing ArrayList of ArrayList
我正在尝试打印我的arraylist,但是我不知道为什么我的打印不能在Adjlist的每个索引中逐行打印IntegerPair:
private ArrayList<ArrayList<IntegerPair>> AdjList; //outer arraylist
private ArrayList<IntegerPair> storeNeighbour; //inner arraylist
private IntegerPair pair;
这是我的片段:
for (ArrayList<IntegerPair> l1 : AdjList) {
for (IntegerPair n : l1) {
System.out.println( n + "# ");
}
}
ArrayList.toString()的默认行为是返回一个字符串,该字符串包含列表中每个元素上toString()
的(某种程度上)美化的调用列表。
所以,长话短说:你快到了; 缺少的一件事:
@Override
public String toString() {
...
在您的IntegerPair类中。
喜欢:
public class IntegerPair {
private final Integer first;
private final Integer second;
...
@Override
public String toString() {
return "(" + first + "/" + second ")";
}
或类似的东西。 在不重写toString()
的情况下,您的类将依赖于java.lang.Object中提供的默认实现; 并且该方法返回类名+哈希码号(因此不是人类可读的)。
这里 :
for (ArrayList<IntegerPair> l1 : AdjList) {
for (IntegerPair n : l1) {
System.out.println( n + "# ");
}
}
您无需区分每个打印的列表。
结果,您将获得一系列输出,而无需知道与同一列表相关联的输出。
更具可读性的印刷品为:
for (ArrayList<IntegerPair> l1 : AdjList) {
System.out.println("ArrayList with :");
for (IntegerPair n : l1) {
System.out.println( n + "# ");
}
}
您没有指定输出。 所以我不认为toString()
是否被重写。 如果未重写它,则应该重写它以呈现此处期望的String: System.out.println( n + "# ");
,或者您应在此处指定要呈现的内容:
System.out.println( n.getOne() + "," + n.getOther() + "# ");
附带说明一下, toString()
设计用于调试/记录日志,而不用于显示功能消息,因为可以以一种情况呈现对象,而以其他方式呈现对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.