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

时间:2016-09-28 07:04:46

标签: java hashmap tablerow linkedhashmap

我正在使用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<>();
}

1 个答案:

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