3

您好我正在尝试从另一个类中的一个类中的 ArrayList 中获取元素。所以我从 mysql 数据库中提取数据,然后将其存储在 Arraylist 中。我想从该 ArrayList 访问数据并将它们从另一个类中打印出来,但由于某种原因,它只打印元素的地址而不是实际元素本身。

它是 Team 类型,在构造函数中有三个元素,一个 String 和两个 int。

从数据库中获取:

while(res.next()){
            teamList.add(new Team(res.getString("Team_Name"), res.getInt("Goal_Difference"),
                    res.getInt("Points")));
        }

ArrayList 的返回语句:

public ArrayList<Team> getTeamList(){
    return teamList;
}

以及我要打印的地方:

public Verdict(){
    ArrayList<Team> leagueList = new LeagueSQLConnector().teamList;
    System.out.println(leagueList);
}
4

2 回答 2

2

为此,您需要在您的类中覆盖该toString()方法。Team

看起来像下面的东西。

class Team{
    private String name;
    private String type;

    //constructor

    //setters

    //getters


    @Override
            public String toString() {
                 StringBuilder result = new StringBuilder();
                 result.append(this.name ).append(",");  
                 result.append(this.type );
                 return result.toString();
            }
}

根据toString()的文档

返回对象的字符串表示形式。通常,toString 方法返回一个“以文本方式表示”该对象的字符串。

于 2013-10-10T14:32:30.370 回答
0

你没有得到漂亮和漂亮的输出的原因是编译器不“知道”你的对象应该如何转换为String. 你看到的是默认toString实现的Object结果。您应该实现方法,只要对象“转换”为字符串toString,就会调用该方法。Team有几种常见的方法可以实现这一点:

阿帕奇公共语言

@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this);
}

这是一个简单的单行程序,它将获取所有类属性并打印它们。

谷歌番石榴

@Override
public String toString() {
    return MoreObjects.toStringHelper(this.getClass())
        .add("Team name", name)
        .add("Goal difference", goalDifference)
        .add("Points", points)
        .toString();
}

如果您想控制应该显示哪些属性,这个很好。

最直接的方法:

手动编写toString方法(像 Intellij Idea 这样的 IDE 提供了方便的代码生成)。为此,您不需要任何库。

然后你可以自由地做System.out.println(leagueList)一个List很好的实现toString

于 2013-10-10T15:11:06.550 回答