【问题标题】:hashmap not hold values?hashmap 不保存值?
【发布时间】:2011-10-16 13:16:44
【问题描述】:

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

我的问题如下; 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        

【问题讨论】:

  • 你想看什么?输出应该是什么?你在说什么?我的意思是,您正在创建一个新地图并调用 System.out.println(map)...
  • 第一:使用coding conventions,你的代码是一团糟。第二:什么是空?控制台中的输出?
  • 为什么不在插入它们之前输入System.out.println("ID: " + Id + " Name: " + Name + " GPA: " + GPA"); 并查看它们显示的内容。很有可能会告诉你你做错了什么。
  • @ThomasJ 一团糟?怎么会这样?我看到一个字符串不合适(在最后一个 showMessageDialog 中)。除此之外,他根本没有为类及其终止符缩进,这实际上是一种相当普遍的做法。
  • 我认为控制台中的输出应该是 {}... 还是?

标签: java collections hashmap


【解决方案1】:

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

地图需要作为动作处理程序中的局部变量以外的东西存在。

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

【讨论】:

  • 我知道是这样的。感谢您的快速回复!
  • 当然——总是有问题! :)
【解决方案2】:

使用equals() 方法。

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

【讨论】:

  • Java 中没有Stringequal() 方法。当然你的意思是equals()
  • 很高兴知道,我会改变的。感谢您的快速回复!
猜你喜欢
  • 2014-04-03
  • 2012-08-07
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2016-06-15
  • 2013-10-04
  • 2014-10-15
相关资源
最近更新 更多