正确使用toString打印数组?

时间:2015-05-12 03:40:12

标签: java arrays

我有一个我需要打印的数组,而且我已经查看了stackoverflow所以我知道我需要使用toString以便我不只是打印哈希码,但由于某种原因,它是仍在打印“music2.Music2@4162b8cemusic2.Music2@3852fdebmusic2.Music2@509c6c30

之类的内容
Music2[] musiclist = new Music2[10];
musiclist[0] = new Music2("Pieces of You", "1994", "Jewel");
musiclist[1] = new Music2("Jagged Little Pill", "1995", "Alanis Morissette");
musiclist[2] = new Music2("What If It's You", "1995", "Reba McEntire");
musiclist[3] = new Music2("Misunderstood", "2001", "Pink");
musiclist[4] = new Music2("Laundry Service", "2001", "Shakira");
musiclist[5] = new Music2("Taking the Long Way", "2006", "Dixie Chicks");
musiclist[6] = new Music2("Under My Skin", "2004", "Avril Lavigne");
musiclist[7] = new Music2("Let Go", "2002", "Avril Lavigne");
musiclist[8] = new Music2("Let It Go", "2007", "Tim McGraw");
musiclist[9] = new Music2("White Flag", "2004", "Dido");

public static void printMusic(Music2[] musiclist) {
     System.out.println(Arrays.toString(musiclist));         
}

这是我的数组和我用来打印它的方法。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:2)

您应该在toString()课程中定义Music2方法,然后按照您喜欢的方式进行打印。我不知道对象中的字段是如何准确命名的,但它看起来像这样:

public class Music2 {
    ...

    @Override
    public String toString() {
        return this.artist + " - "+ this.title + " (" + this.year + ")";
    }
}

之后,您的printMusic方法将按预期工作。

答案 1 :(得分:0)

您可以为每个循环声明一个以显示音乐的属性。这是代码

for (Music2 music : musiclist){
    System.out.println("Title: " + music.getTitle);
}

答案 2 :(得分:0)

因为默认情况下Arrays得到了Object类的toString()实现,即:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

因此,您需要覆盖班级中的toString()

@Override
    public String toString() {
        return this.fieldNameone + " "+ this.fieldNametwo + " " + this.fieldNamethree + " ";
    }

答案 3 :(得分:0)

如果使用Java8,您可以使用

Arrays.stream(musiclist).forEach(System.out::print)

但请确保Music2具有toString()

的覆盖方法

答案 4 :(得分:0)

在Arrays.toString(musiclist)中,您实际上是在数组的每个元素上调用toString()来组成结果字符串。因此,如果您在Music2类中覆盖基本的Object toString()实现,您将得到您想要的内容

public class Music2 {
    .....
    @Override
    public String toString() {
        return "Music2{" + "title=" + title + ", group=" + group + ", year=" + year + '}';
    }
}