【问题标题】:Printing an Array List full of a new type of object打印一个充满新型对象的数组列表
【发布时间】:2018-05-18 19:47:50
【问题描述】:

我正在开发一个 Java 程序,其中我有一个名为“CD”的 ArrayList,在这张 CD 里面有“Songs”,每首歌曲都是我的 Song 类中的一个对象,它有参数:字符串艺术家,字符串专辑和 int 年份。关于如何打印它以便同时打印每首歌曲的内容的任何一般性建议?

附:我知道这里有类似的问题,但我仍然无法让它准确地打印出我想要的内容,并且我尝试过使用迭代器。

提前感谢所有帮助!

【问题讨论】:

  • 向我们展示您的迭代器尝试。或者在 Song 类中添加一个 toString() 方法。
  • 是的,请分享更多信息和到目前为止您编写的代码,如果没有更多详细信息,不可能知道哪些代码会有所帮助!

标签: java class arraylist iterator


【解决方案1】:

只需使用 foreach

for (Song s:CD) {
    System.out.println(s);
}

在你的 Song 类中,添加以下内容:

public String toString() {
    return artist+" "+album+" "+year;
}

当您打印一个对象时,打印机首先查看 toString 方法,该方法由 Object 类中的每个对象继承。覆盖 toString 方法,更改给定对象的表示。

最后,我建议您的歌曲有一个“名称”字段。我的意思是,这不是可打印数据中最重要的部分吗?

【讨论】:

  • 是的,我不敢相信我忘记了。那么什么时候需要使用 Iterator 类而不是使用 for each 循环呢?
  • @user2465406 好吧,假设您有一个整数矩阵,要填充一些随机值。所以你有 int i[n][n];如果你通过 foreach 循环,你将无法“填充”矩阵,没有一些外部迭代器。因此,一个 for 循环(在这种情况下是两个)更有用。每当您不想“喂”另一个数组时,都可以使用 Foreach。如果您需要某些整数数组的最小值,或者您正在打印一些东西,就像这里一样。
【解决方案2】:

您需要在您的Song 类中实现toString() 方法。

如果没有实现这个方法,Java 只会打印对象的引用地址。 对于您的Songclass,toString() 方法可能如下所示:

public String toString(){
    return "Artist:"+artists+", Song name:"+ songName+", Album:"+album+", Year:"+year;
}

之后,您可以简单地打印您的数组 System.out.println(Arrays.toString(cd));

【讨论】:

  • 另外,这是有道理的,因为我正在获取地址值
【解决方案3】:

在 Song 类中写入 toString() 方法

public String toString()
{
   return artist + " " + album + " " + year;
}

然后调用方法 toString().Example System.out.println(MyList.toString())

【讨论】:

    【解决方案4】:

    您还可以在 Songs 类上使用 Lombok @ToString 注解。以防你懒得写自己的 toString 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 2013-05-04
      • 2021-02-02
      • 1970-01-01
      • 2021-05-05
      • 2016-02-16
      • 1970-01-01
      相关资源
      最近更新 更多