无法打印存储在HashMap中的对象?

时间:2015-10-16 18:15:53

标签: java hashmap

我正在为我的java类工作,我们刚开始学习HashMaps,我们有这个分配,我们创建枚举数据并将其存储在一个hashmap中以便稍后打印出来。我可以想象的是能够打印HashMap的元素。到目前为止,这是我的项目:

public class Driver <enumeration>
{
    private static HashMap<String, State> stateList = new HashMap<String, State>();
    public static void main(String args[]) throws IOException
    {
        stateList.put("1", State.CA);
        stateList.put("2", State.FL);
        stateList.put("3", State.ME);
        stateList.put("4", State.OK);
        stateList.put("5", State.TX);

        for(State value : stateList.values())
        {
            System.out.println(value);
        }
    }
 }

public enum State
{
    CA(new StateInfo("Sacramento", 38802500)), FL(new StateInfo("Tallahassee", 19893297)),
    ME(new StateInfo("Augusta", 1330089)), OK(new StateInfo("Oklahoma City", 3878051)), 
    TX(new StateInfo(" Austin",  26956958));

    private StateInfo info;
    private State(StateInfo info)
    {
        this.info = info;
    }

    public StateInfo getInfo()
    {       
        return info;
    }

    public String toString()
    {   
        return "";
    }
}

public class StateInfo 
{
    private String capital;
    private int population;

    public StateInfo(String capital, int population)
    {
        this.capital = capital;
        this.population = population;
    }

    public String getCapital()
    {
        return capital.toString();
    }

    public int getPopulation()
    {   
        return population;
    }

    public String toString()
    {   
        return "";
    }
}

现在,当我尝试运行该程序时,它只会终止,而不会像我试图打印的状态对象的参考号那么多。我认为错误的是StateInfo类,所以我尝试改变一些东西,但没有占上风。任何人都可以告诉我,我的停赛是否正确,还是我忽略了什么?

1 个答案:

答案 0 :(得分:6)

您已覆盖toString()类中的State方法:

public String toString()
{   
    return "";
}

因此,在循环中调用value方法的每个toString()都没有输出:

for(State value : stateList.values())
{
    System.out.println(value);
}

更确切地说:你应该得到5个空行。

删除toString()方法以使用Java的默认toString()实现,该实现返回类名+ hashCode()或使其返回,例如"Capital: " + info.getCapital()