使用jButton将数据保存到哈希映射中

时间:2013-11-27 14:17:14

标签: java user-interface netbeans hashmap

我是java的新手,需要帮助才能通过jButton将数据保存到哈希映射中。我有一个我在netbeans中创建的GUI,有三个字段。 召集人ID,审查员和学生证。用户只需在每个字段中输入数据,然后单击“提交”,这应将其存储到哈希映射中。我遇到的问题是我希望每条记录都是唯一的,并且有一个以G开头的密钥,每次提交记录时都会增加。 E.g G1 | 1 | KK | thr,tut,tet G2 | 2 | KR | abc,def,ghi :等。

private void savemode () {
     HashMap<String, Collection<String>> a = new HashMap<String, Collection<String>>();
     int x = Integer.parseInt(counter.getText());
     counter.getText();
String key = "G" + x;
String[] lines = textbox1.getText().split("\n"); 
a.put(key, new ArrayList<String>());
a.get(key).add(textbox2.getText());
a.get(key).add(textbox3.getText());
a.get(key).add(Arrays.toString(lines)); 

textbox1.setText("");
textbox2.setText("");
textbox3.setText("");
x++;
counter.setText(Integer.toString(x));
}

2 个答案:

答案 0 :(得分:1)

每次保存数据时,您都在重新创建HashMap,并且因为您只在按下按钮时保存当前记录,所以您永远不会保留以前的值。一个简单的解决方案是使您的HashMap全局化,然后在插入新的键/值对或修改现有的键/值对之前检查用户希望保存/修改的键的存在。

要使变量成为全局变量,请执行以下操作:

public class MyClass
{
   private HashMap<Key, Value> myHashMap = new HashMap<>();

   public void myMethod()
   {
     myHashMap.put(myKeyVariable, myValueVariable);
   }
}

答案 1 :(得分:0)

每次存储记录时都会重新创建HashMap,因此旧的存储记录将被删除。将HashMap声明移出方法,并在包含saveMode方法的类中将其创建为私有变量。

private Map<String, Collection<String>> a = new HashMap<String, Collection<String>>();

然后,当调用该方法时,只需将新记录添加到现有地图,而不是每次都重新创建它。