问题描述
我有一个数据结构是这样的:
HashMap<String, HashMap<String,String>> map = new HashMap<>();
在这种结构中,我必须以这种方式保存数据:
Low 12 1
High 22 0
Low 10 1
Low 11 0
现在,我必须仅打印具有第一个参数“ Low”的数据,但是当我执行.get("Low")
如果在变量中也有一个“ High”元素,则也将打印此数据。
这是我的代码:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
HashMap<String, HashMap<String,String>> map = new HashMap<>();
HashMap<String,String> map2 = new HashMap<>();
String label[];
JCheckBox casella=new JCheckBox();
if(jList2.getModel().getSize()>0){ //Se sono state selezionate PAD
for(int i=0; i<jPanel2.getComponentCount(); i++){ //Controlla se le PAD hanno i prode
if( (casella=(JCheckBox) jPanel2.getComponent(i)).isSelected() ){ //Si
label=(casella.getText()).split(" ");
map2.put(label[4], "1");
map.put(label[2],map2);
}
else{ //No
label=(casella.getText()).split(" ");
map2.put(label[4], "0");
map.put(label[2], map2);
}
}
System.out.println(map.get("Low"));
}
我哪里错了? 谢谢。
1楼
您总是将map2
放入map
,在该map
中您应该第一次创建新的HashMap,然后第二次及以后重复使用Hashmap。
伪代码(未经测试):
label2subitems = map.get(label[2]);
if (label2subitems == null)
{
label2subitems = new HashMap();
map.put(label[2],label2subitems);
}
label2subitems.put(...);