如何将 3 个 hashmap 合并为单个 linkedhashmap?

how to merge 3 hashmap into single linkedhasmap?

我正在使用 eclipse 插件,我有 3 个 hasmap 名称,如 hmTextONLY、hmCOMBO1ONLY、hmCOMBO2ONLY(它包含键、值)然后我想使用相同的键制作简单的 linkedhashmap从上面的哈希图来看,其他的是 likedhashmap 的索引和哈希图的键是相同的。

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<>();
}

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);