Java Can';是否打印HashMap中存储的对象?

Java Can';是否打印HashMap中存储的对象?,java,hashmap,Java,Hashmap,我正在为我的java类做一个作业,我们刚刚开始学习HashMaps,我们有一个作业,我们创建枚举数据并将其存储在hashmap中,以便稍后打印。我能想到的似乎是能够打印HashMap的元素。以下是我目前的项目: public class Driver <enumeration> { private static HashMap<String, State> stateList = new HashMap<String, State>(); pu

我正在为我的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 "";
    }
}
公共类驱动程序
{
私有静态HashMap stateList=新HashMap();
公共静态void main(字符串args[])引发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(状态值:stateList.values())
{
系统输出打印项次(值);
}
}
}
公共枚举状态
{
加利福尼亚州(新州信息(“萨克拉门托”,38802500)),佛罗里达州(新州信息(“塔拉哈西”,19893297)),
ME(新州信息(“Augusta”,1330089)),OK(新州信息(“俄克拉荷马城”,3878051)),
德克萨斯州(新州信息(“奥斯汀”,26956958));
私有状态信息;
私有状态(StateInfo)
{
this.info=info;
}
public StateInfo getInfo()
{       
退货信息;
}
公共字符串toString()
{   
返回“”;
}
}
公共类StateInfo
{
私人资本;
私人人口;
public StateInfo(字符串大写,整数填充)
{
这个资本=资本;
这个。人口=人口;
}
公共字符串getCapital()
{
返回资本。toString();
}
公共整数getPopulation()
{   
返回人口;
}
公共字符串toString()
{   
返回“”;
}
}

现在,当我尝试运行程序时,它只是终止,甚至没有我试图打印的状态对象的参考号。我认为错误的是在StateInfo类中,所以我尝试更改一些内容,但没有成功。有人能告诉我我的暂停是否正确,或者我是否忽略了什么吗?

您已经在
状态中重写了
toString()
方法
类:

public String toString()
{   
    return "";
}
因此,对于每个
,都不会得到任何输出。循环中会调用
toString()
方法:

for(State value : stateList.values())
{
    System.out.println(value);
}
更准确地说:你应该得到5条空行


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

关于命名的旁注:调用“stateList”作为映射会让读者非常困惑。给每件东西起一个名字,说明它是什么。因此,更可取的做法是,将其称为“国家”;如果有充分的理由明确说明收集的类型;然后将其称为“stateMap”,您不需要调用
capital.toString()大写字母
进行编码>以获取字符串。只需使用
capital
似乎不起作用,我尝试阻止该方法,并返回一些随机字符串,但它仍然运行并终止。请注意,您的代码中有两个toString()方法。是的,就是这样。非常感谢。