[英]Remove one object from Arraylist<object> saved in sharedPreferences
[英]Unable to fetch value from ArrayList saved in an object , and object saved in a HashMap
我正在使用Swing,無法從保存在對象中的arrayList
獲取值,然后將其保存在hashMap
。
system.out.println
打印任何值。
我的代碼包含一個過程列表和一個參數列表。 單擊添加參數按鈕后 ,參數將添加到paramList
單擊添加過程按鈕時,將從textfield
獲取的過程保存在procList
。
paramList
中的值保存在新對象中(對象包含具有getter和setter的arraylist)
Hashmap
將過程名稱存儲為key
,將對象存儲為value
然后,我有另一個事件,我們在GUI上單擊過程列表,然后獲取選定的過程名稱,
所選過程名稱可以用作從HashMap中獲取值的鍵。 我們使用鍵從hashmap獲取參數的數組列表。
但是,當我嘗試在GUI中顯示時,它為空白,然后我嘗試使用System.out.println來查看值是否存在,而print :-(
問題在於private void getParameterList
這是代碼。
//variable declaration
String procedureName;
String parameterName;
ArrayList<String> procList = new ArrayList<>();
ArrayList<String> paramList = new ArrayList<>();
HashMap<String,ParamListPojo> procMapper = new HashMap<>();
private void Button_addParameterActionPerformed(java.awt.event.ActionEvent evt) {
parameterName = paramField.getText();
paramList.add(parameterName);
//System.out.println(paramList);
DefaultListModel paramListModel = new DefaultListModel();
//populating DefaultListModel for parameters
Iterator<String> it2 = paramList.iterator();
while(it2.hasNext()){
paramListModel.addElement(it2.next());
}
//populating parameterList
parameterList.setModel(paramListModel);
paramField.setText("");
}
private void button_addProcedureActionPerformed(java.awt.event.ActionEvent evt) {
//procedureName = level_funcPrefix.getText() +procedureField.getText();
ParamListPojo paramListPojo = new ParamListPojo();
procList.add(procedureName);
//Storing procedures and parameters in MAP
paramListPojo.setParamList(paramList);
procMapper.put(procedureName,paramListPojo);
System.out.println(procList);
System.out.println(paramList);
System.out.println(procMapper);
procedureField.setText("");
DefaultListModel procListModel = new DefaultListModel();
DefaultListModel paramListModel = new DefaultListModel();
// populating DefaultListModel for procedureList
Iterator<String> it1 = procList.iterator();
while(it1.hasNext()){
procListModel.addElement(it1.next());
}
//populating DefaultListModel for parameters
Iterator<String> it2 = paramList.iterator();
while(it2.hasNext()){
paramListModel.addElement(it2.next());
}
// populating procedureList
procedureList.setModel(procListModel);
procedureList.setSelectedIndex(procList.size()-1);
//populating parameterList
parameterList.setModel(paramListModel);
paramList.clear();
}
// populate Parameter List on GUI when procedure is selected
private void getParameterList(java.awt.event.MouseEvent evt) {
String procedure = procedureList.getSelectedValue();
System.out.println("MouseClickEvent , procedure is "+procedure);
//ParamListPojo prjL = new ParamListPojo();
ParamListPojo prjL = procMapper.get(procedure);
paramList = prjL.getParamList();
System.out.println(paramList);
//Declaring DefaultListModel for parameters
DefaultListModel paramListModel = new DefaultListModel();
Iterator<String> it = paramList.iterator();
while(it.hasNext()){
String parameter = it.next();
paramListModel.addElement(parameter);
System.out.println(parameter);
}
控制台輸出為
[p_csacas]
[scasca, ascacasc, ascacs]
{p_csacas=wrapperbuilder.ParamListPojo@1150594}
[p_csacas, f_ascasc]
[rrrrrr]
{p_csacas=wrapperbuilder.ParamListPojo@1150594, f_ascasc=wrapperbuilder.ParamListPojo@26df23}
MouseClickEvent , procedure is p_csacas
[]
因此,我們可以看到在添加過程時,兩個列表中都存在值,並且HashMAP中也存在該值。但是,當在GUI中的列表上單擊鼠標時,輸出將變為空白。
請在這件事上給予我幫助 :-(
問題已經解決了。 問題出在ParamListPojo
類中ParamListPojo
的setter方法上。
public void setParamList(ArrayList<String> procList) {
//this.prmList = procList;
prmList.addAll(procList);
}
以前我使用this.prmList = procList
現在我正在使用prmList.addAll(procList);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.