Java Can';是否打印HashMap中存储的对象?
我正在为我的java类做一个作业,我们刚刚开始学习HashMaps,我们有一个作业,我们创建枚举数据并将其存储在hashmap中,以便稍后打印。我能想到的似乎是能够打印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
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()方法。是的,就是这样。非常感谢。