2013-11-27 73 views
0

我是java新手,需要幫助通過jButton將數據保存到哈希映射中。我有一個我在netbeans中創建的GUI,有三個字段。 召集人ID,審查員和學生證號碼。用戶只需在每個字段中輸入數據,然後單擊提交,該提交應將其存儲到哈希映射中。我遇到的問題是我希望每條記錄都是唯一的,並且有一個以G開頭的密鑰,每次提交記錄時都會增加。 例如G1 | 1 | KK | thr,tut,tetG2 | 2 | KR | ABC,DEF,GHI:等使用jButton將數據保存到哈希映射中

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)); 
} 
+0

嗨,我剛剛發佈的代碼。當用戶按下按鈕時,發生動作'savdemode'。它應該將數據保存到散列表中,併爲每個以G開頭的記錄分配一個唯一的鍵。 – user3037071

+0

這是什麼情況? – arcy

+0

它使用G1的唯一鍵存儲第一條記錄,但是當用戶使用G2的鍵添加另一條記錄時,它會覆蓋第一條記錄。 – user3037071

回答

1

你保存數據每一次,你要重新創建的HashMap,因爲你只節省按下按鈕當前記錄,你永遠不會來保留以前的值。一個簡單的解決方案是將HashMap設爲全局,然後在插入新的鍵/值對或修改現有的鍵/值對之前,檢查用戶希望保存/修改的鍵是否存在。

爲了使您的全局變量,做一個類似於以下內容:

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

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

我將如何使HashMap成爲全局的。我一直在使用谷歌搜索,但沒有設法找到答案。 – user3037071

+0

我已經修改了我的答案,其中包含一個示例 – Fallso

+0

Cheers guys。管理做到了。謝謝 – user3037071

0

你現在重新創建每次您存儲記錄的時間HashMap的,所以老存儲的記錄被刪除。將HashMap聲明移出該方法,並將其創建爲包含saveMode方法的類中的私有變量。

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

然後,當調用該方法時,只需將新記錄添加到現有地圖,而不是每次重新創建它。