我有一个数据结构:
HashMap<String, HashMap<String,String>> map = new HashMap<>();
在这种结构中,我必须以这种方式保存数据:
Low 12 1
High 22 0
Low 10 1
Low 11 0
现在,我必须只打印第一个参数&#34; Low&#34;但是当我.get("Low")
时,如果在我的变量中,还有一个&#34; High&#34;元素打印也是如此。
这是我的代码:
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"));
}
哪里错了?感谢。
答案 0 :(得分:1)
您始终将map2
放入map
,您应该首次创建新的HashMap,然后在第二次及以后重复使用Hashmap。
伪代码(未经测试):
label2subitems = map.get(label[2]);
if (label2subitems == null)
{
label2subitems = new HashMap();
map.put(label[2],label2subitems);
}
label2subitems.put(...);