HashTable的方法获取打印所有元素

时间:2015-07-17 11:47:41

标签: java hashmap

我有一个数据结构:

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"));

    }

哪里错了?感谢。

1 个答案:

答案 0 :(得分:1)

您始终将map2放入map,您应该首次创建新的HashMap,然后在第二次及以后重复使用Hashmap。

伪代码(未经测试):

label2subitems = map.get(label[2]);
if (label2subitems == null)
{
    label2subitems = new HashMap();
    map.put(label[2],label2subitems);
}
label2subitems.put(...);