我正在使用eclipse插件,我有3个hasmap名称,如 hmTextONLY,hmCOMBO1ONLY,hmCOMBO2ONLY (它包含键,值)然后我想使用上面hashmap中的相同键来创建简单的linkedhashmap,并且另一件事是likeshashmap的索引和哈希映射的键是相同的。
3个hashmap代码如下:
private void fillRows(String shortdesc, String categ, String descp) {
TableItem ramtableitem = new TableItem(table, SWT.NONE);
// for Threat_Name
TableEditor editorTN = new TableEditor(table);
text_1 = new Text(table, SWT.NONE);
editorTN.grabHorizontal = true;
editorTN.setEditor(text_1, ramtableitem, 0);
text_1.setText(shortdesc);
Theart_Name = text_1.getText();
hmTextONLY.put(hmT++, Theart_Name);
// For Category_Name
TableEditor editorCN = new TableEditor(table);
text_2 = new Text(table, SWT.NONE);
editorCN.grabHorizontal = true;
editorCN.setEditor(text_2, ramtableitem, 1);
text_2.setText(categ);
Category_Name = text_2.getText();
hmTextONLY.put(hmT++, Category_Name);
String items[] = { "Mitigated", "Not Applicable", "Not Started",
"Needs Investigation" };
Arrays.sort(items);
final CCombo Status_Combo = new CCombo(table, SWT.NONE);
Status_Combo.setItems(items);
TableEditor editor = new TableEditor(table);
editor.grabHorizontal = true;
editor.setEditor(Status_Combo, ramtableitem, 2);
Status_Combo.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
Status_Name = Status_Combo.getText();
hmCOMBO1ONLY.put(hmC1, Status_Name);
}
public void widgetDefaultSelected(SelectionEvent e) {
Status_Name = Status_Combo.getText();
hmCOMBO1ONLY.put(hmC1, Status_Name);
}
});
// For Priority_Name
String itemss[] = { "High", "Medium", "Low" };
Arrays.sort(itemss);
final CCombo Priority_Combo = new CCombo(table, SWT.NONE);
Priority_Combo.setItems(itemss);
TableEditor editorP = new TableEditor(table);
editorP.grabHorizontal = true;
editorP.setEditor(Priority_Combo, ramtableitem, 3);
Priority_Combo.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
System.out.println(Priority_Combo.getText());
Priority_Name = Priority_Combo.getText();
hmCOMBO2ONLY.put(hmC2, Priority_Name);
}
public void widgetDefaultSelected(SelectionEvent e) {
System.out.println(Priority_Combo.getText());
Priority_Name = Priority_Combo.getText();
hmCOMBO2ONLY.put(hmC2, Priority_Name);
}
});
// For Descrption_Name
TableEditor editorDN = new TableEditor(table);
text_3 = new Text(table, SWT.NONE);
editorDN.grabHorizontal = true;
editorDN.setEditor(text_3, ramtableitem, 4);
text_3.setText(descp);
Descrption_Name = text_3.getText();
hmTextONLY.put(hmT++, Descrption_Name);
// For justification
TableEditor editorJ = new TableEditor(table);
text_4 = new Text(table, SWT.MULTI | SWT.BORDER | SWT.WRAP
| SWT.V_SCROLL);
editorJ.grabHorizontal = true;
editorJ.setEditor(text_4, ramtableitem, 5);
Justification_Name = text_4.getText().toString().trim();
hmTextONLY.put(hmT++, Justification_Name);
}
另一个方法SaveState,我想将所有hashmap合并到linkedhashmap中。 下面给出的代码。
public void saveState(IMemento memento) {
super.saveState(memento);
System.out.println("Save State Called");
System.out.println("row" + table.getItemCount());
System.out.println("hmTextONLY.size()=====" + hmTextONLY.size());
Map<Integer, String> linkedHashMap = new LinkedHashMap<>();
}
答案 0 :(得分:0)
LinkedHashMap具有键的插入顺序,因此您可以对地图进行排序,然后将它们添加到链接的地图中:
TreeMap<Integer, String> sortedMap = new TreeMap<>();
sortedMap.putAll(hmTextONLY);
sortedMap.putAll(hmCOMBO1ONLY);
sortedMap.putAll(hmCOMBO2ONLY);
Map<Integer, String> linkedHashMap = new LinkedHashMap<Integer,String>(sortedMap);