Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jButton将数据保存到哈希映射中_Java_User Interface_Netbeans_Hashmap - Fatal编程技术网

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

Java 使用jButton将数据保存到哈希映射中,java,user-interface,netbeans,hashmap,Java,User Interface,Netbeans,Hashmap,我是java新手,需要帮助通过jButton将数据保存到哈希映射中。我有一个在netbeans中创建的GUI,它有三个字段召集人ID、考官和学生ID。用户只需在每个字段中输入数据,然后单击Submit,它就会将数据存储到哈希映射中。我所面临的问题是,我希望每个记录都是唯一的,并且有一个以G开头的键,每次提交记录时,该键都会递增。 例如,G1 | 1 | KK | thr、tut、tet:G2 | 2 | KR | abc、def、ghi:等 private void savemode () {

我是java新手,需要帮助通过jButton将数据保存到哈希映射中。我有一个在netbeans中创建的GUI,它有三个字段召集人ID、考官和学生ID。用户只需在每个字段中输入数据,然后单击Submit,它就会将数据存储到哈希映射中。我所面临的问题是,我希望每个记录都是唯一的,并且有一个以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));
}
private void保存模式(){
HashMap a=新的HashMap();
intx=Integer.parseInt(counter.getText());
counter.getText();
字符串key=“G”+x;
String[]line=textbox1.getText().split(“\n”);
a、 put(key,newarraylist());
a、 get(key).add(textbox2.getText());
a、 get(key).add(textbox3.getText());
a、 get(key).add(Arrays.toString(line));
textbox1.setText(“”);
textbox2.setText(“”);
textbox3.setText(“”);
x++;
counter.setText(Integer.toString(x));
}

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

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

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

   public void myMethod()
   {
     myHashMap.put(myKeyVariable, myValueVariable);
   }
}
公共类MyClass
{
私有HashMap myHashMap=新HashMap();
公共方法()
{
put(myKeyVariable,myValueVariable);
}
}

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

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

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

Hi,我刚刚发布了代码。当用户按下按钮时,会发生动作“SAVDEMDEME”。它应该将数据保存到hashmap中,并为从G开始输入的每个记录分配一个唯一键。这会发生什么?它使用唯一键G1存储第一条记录,但当用户添加另一条键为G2的记录时,它会覆盖第一条记录。如何使hashmap全局化。我一直在谷歌上搜索,但还没有找到答案。我已经修改了我的答案,加入了一个示例Cheers guys。我设法做到了。谢谢