无法在ArrayList对象中的特定索引处打印内容

时间:2014-01-05 17:55:26

标签: java string arraylist

我有以下Team类:

import java.util.ArrayList;
import java.util.Random;
public class Team {

private String name;    
private int noOfTeams;

public ArrayList<Team> teamList; 

//no-arg constructor, creates the array list of default teams
Team(){
    this.teamList = new ArrayList<Team>();

    teamList.add(new Team("Brondby IF"));
    teamList.add(new Team("AaB"));
    teamList.add(new Team("Viborg FF"));
    teamList.add(new Team("Esbjerg"));
    teamList.add(new Team("FC Copenhagen"));
    teamList.add(new Team("Randers FC"));
    teamList.add(new Team("FC Midtjylland"));
    teamList.add(new Team("FC Nordsjaelland"));
    teamList.add(new Team("Odense BK"));
    teamList.add(new Team("AGF Aarhus"));
    teamList.add(new Team("FC Vestsjaelland"));
    teamList.add(new Team("Sonderjyske"));

}

//constructor using name
Team(String name){
    this.name =name;
}

    //get name of team
public String getName(){
    return name;
}

//get the size of the arrayList
public int getSize(){
    return teamList.size();
}

//get an element at a specific index i
public Team getIndex(int i){
    return teamList.get(i);
}

和一个客户端(测试)类,我尝试使用上面定义的ArrayList方法在getIndex()中的第二个位置(例如)打印元素:

public class TestTeam {

public static void main(String[] args){


    Team teamList = new Team();     
    System.out.print(teamList.getIndex(2));
}   
}

以上是给我的职位:Team@45a1472d。我尝试使用:

System.out.print((teamList.getIndex(2)).toString());

但结果相同。当我调试它时,teamList.getIndex(2)的值似乎为空。我无法看到Team类中的方法出错了什么,感谢任何提示/帮助。

2 个答案:

答案 0 :(得分:3)

您必须在toString()课程中使用Team方法。否则,它将调用Object#toString()方法。

现在它正在打印ObjecttoString()方法的默认实现,该方法的实现方式是给出对象哈希码的无符号十六进制表示。

public class Team {

@Ovveride
public String toString() {
    //build a string for team class to print and return here.
}


}

答案 1 :(得分:2)

主要问题是您的计划结构已关闭:团队不应包含ArrayList<Team>。 ArrayList应该驻留在另一个类中,比如League或TeamList类。您可能会遇到使用当前代码进入StackOverflowException的风险。


修改
你问:

  

在你的建议中,TeamList / ArrayList类应该是Team的子类吗?如果我像现在这样保持风险,你能成为一个更具体的风险吗?

不,它绝对不应该是一个子类。从逻辑上考虑一下:棒球联赛不是一支特殊类型的棒球队,是吗?不,所以你对子类的想法不满足子类化的“is-a”规则。它应该是它自己的类,它有自己的非静态方法和字段。