获取ArrayList元素但仅返回元素地址

时间:2013-10-10 14:30:46

标签: java arraylist return

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

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

从数据库中获取它:

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);
}

2 个答案:

答案 0 :(得分: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方法返回一个“文本表示”此对象的字符串。

答案 1 :(得分:0)

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

<强> Apache commons-lang

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

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

<强> Google Guava

@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有一个不错的implementation of toString