【问题标题】:Java Printing ArrayList of ArrayListJava打印ArrayList的ArrayList
【发布时间】:2017-02-27 11:51:33
【问题描述】:

我正在尝试打印我的数组列表,但我不知道为什么我的打印没有在 Adjlist 的每个索引中逐行打印 IntegerPair:

 private ArrayList<ArrayList<IntegerPair>> AdjList; //outer arraylist 
 private ArrayList<IntegerPair> storeNeighbour; //inner arraylist
 private IntegerPair pair;

这是我的sn-p:

for (ArrayList<IntegerPair> l1 : AdjList) {
  for (IntegerPair n : l1) {
    System.out.println( n + "# ");
  }     
}

【问题讨论】:

  • 你能把你的预期输出和你目前得到的输出添加到问题中吗?
  • 输出是什么?像IntegerPair@... 这样的东西?如果是这样,请阅读 Object.toString() 的 JavaDoc ;-)
  • 代码看起来可以工作,这些列表是空的吗???
  • IntegerPair 类是什么?是你的吗?

标签: java arraylist printing


【解决方案1】:

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 中给出的默认实现;并且该方法返回类名 + 哈希码编号(因此不那么可读)。

【讨论】:

    【解决方案2】:

    这里:

    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() 是否被覆盖。如果它没有被覆盖,您应该覆盖它以呈现此处预期的字符串:System.out.println( n + "# ");,或者您应该在此处指定要呈现的内容:

    System.out.println( n.getOne() + "," + n.getOther()  + "# ");
    

    附带说明,toString() 是为调试/记录而设计的,而不是用于显示功能性消息,因为对象可以以某种方式呈现给一个案例,而以另一种方式呈现给其他案例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 2021-01-20
      • 2020-01-16
      相关资源
      最近更新 更多