hashmap不保存值?

时间:2011-10-16 13:16:44

标签: java collections hashmap

在下面的代码中,如果jcbValue计算为Find,我将其设置为打印hashmap的内容。它返回NULL。我假设这意味着到那时,hashmap的内容已被清空。

我的问题如下; 1)我做错了什么? 2)我该如何解决?

谢谢, CJ

   public class ButtonListener implements ActionListener {
   public void actionPerformed(ActionEvent e) {

        HashMap<String, ArrayList> map = new HashMap<String, ArrayList>();

        String jcbValue = (String) jcbIDF.getSelectedItem();
        if (jcbValue == "Insert") {

            String Id = jtfId.getText();
            ArrayList<String> ValueList = new ArrayList<String>();
            String Name = jtfName.getText();
            String GPA = jtfGPA.getText();
            ValueList.add(Name);
            ValueList.add(GPA);
            map.put(Id, ValueList);
            System.out.println(map);

            JOptionPane.showMessageDialog(null, "Record Inserted",
                    "Result", JOptionPane.INFORMATION_MESSAGE);
            // jtfId.setText("");
            // jtfName.setText("");
            // jtfGPA.setText("");
        } else if (jcbValue == "Delete") {
            System.out.println(map);
            JOptionPane.showMessageDialog(null,
                    "Delete Selected; But Not Implemented", "Result",
                    JOptionPane.INFORMATION_MESSAGE);
        } else if (jcbValue == "Find") {
            System.out.println(map);
            JOptionPane.showMessageDialog(null,
    "Find Selected; But not Implemented", "Result",
                    JOptionPane.INFORMATION_MESSAGE);
        }
    }// Terminates actionPerformed Class
    }// Terminates ButtonListenerClass        

2 个答案:

答案 0 :(得分:4)

每次点击actionPerformed都会创建一个新地图,因此在调用它时不会有任何内容。

地图需要作为动作处理程序中的局部变量以外的其他内容存在。

(正如AVD所说,你的比较是不正确的。)

答案 1 :(得分:1)

使用equals()方法。

if(jcbValue.equals("Insert"))
{
  //
}