Java 将新值放置到哈希表中的现有键

Java 将新值放置到哈希表中的现有键,java,Java,我使用hashmap来填充jtable。用户选择一行并单击编辑按钮。我从hashmap中获取值并将其放置在textarea中。用户可以进行更改,然后单击另一个按钮。我有新的值和键,但我不确定如何将更改后的值写回hashmap中的正确键 这就是我将数据写入文本区域的地方 private void outputSelection() { StringBuffer csb = new StringBuffer(); String s = ""; int[] row = selectTabl

我使用hashmap来填充jtable。用户选择一行并单击编辑按钮。我从hashmap中获取值并将其放置在textarea中。用户可以进行更改,然后单击另一个按钮。我有新的值和键,但我不确定如何将更改后的值写回hashmap中的正确键

这就是我将数据写入文本区域的地方

private void outputSelection() {
  StringBuffer csb = new StringBuffer();
  String s = "";
  int[] row = selectTable.getSelectedRows();

  for(int i = row.length-1; i >= 0; i--){
     String check = (String) EdiMapTableModel.getMapInstance().getValueAt(i, EdiMapTableModel.getMapInstance().COMMENT_COL); 
     if (!isNullOrEmpty(check)) {
        if (csb.length() > 0) {
            csb.append("\n");
        }
        csb.append(check);
     }
  }

  s = csb.toString();
  csb.setLength(0);
  output.append(s);
}

这就是我试图将值放回的地方

private void inputSelection() {
  String s = output.getText();
  int[] row = selectTable.getSelectedRows();
  for(int i = row.length-1; i >= 0; i--){
     TCComponentItemRevision check = (TCComponentItemRevision) EdiMapTableModel.getMapInstance().getValueAt(i, EdiMapTableModel.getMapInstance().ITEMID_COL); 
     EdiMapTableModel.getMapInstance().commentBackMap(check, s);
     repaint();
  }    
}

这就是我想把它放回地图的地方

public void commentBackMap(int row, TCComponentItemRevision id, String comment) {

   if(model.containsKey(id)) {
          model.put(id, comment);
   }           
   fireTableDataChanged();
}// end commentBackMap()
我知道康纳斯基不在上面。id是键值

我是否需要遍历hashmap以查找匹配项?不知道它是否重要,但根据文档,它是linkedhashmap而不是hashmap:

将指定的值与此映射中的指定键相关联。如果 映射之前包含键的映射,旧值为 替换

因此,您所要做的就是使用相同的键和新值调用
put
,它将为您进行替换


这也适用于
LinkedHashMap
,因为它继承了
HashMap
中的
put
方法。如果您想维护地图条目的位置,就不能
再次放置它,因为这将把它移到
LinkedHashMap
的末尾。您需要一个holder对象,例如
对象[1]
,在这里您可以替换其成员,而无需再次放置映射条目


或者重新评估你选择的
LinkedHashMap

,这样你所拥有的就不起作用了<代码>put(a,b);put(a,c)
应该用c覆盖b。它可以继承
put
,但是
HashMap。put
调用被覆盖的
addEntry
。如果不这样做,插入顺序语义将如何工作?