当前位置: 代码迷 >> java >> HashTable方法get打印所有元素
  详细解决方案

HashTable方法get打印所有元素

热度:75   发布时间:2023-07-31 11:06:16.0

我有一个数据结构是这样的:

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

    }

我哪里错了? 谢谢。

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

伪代码(未经测试):

label2subitems = map.get(label[2]);
if (label2subitems == null)
{
    label2subitems = new HashMap();
    map.put(label[2],label2subitems);
}
label2subitems.put(...);
  相关解决方案