0

ハッシュマップを使用してjtableにデータを入力しています。ユーザーが行を選択し、編集ボタンをクリックします。ハッシュマップから値を取得し、テキストエリアに配置しています。ユーザーは変更を加えてから、別のボタンをクリックできます。私は新しい値とキーを持っていますが、変更された値をハッシュマップの正しいキーに書き戻す方法がわかりません。

これは、テキストエリアにデータを書き出す場所です

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

containsKey が真上にないことはわかっています。id はキー値です

ハッシュマップを反復処理して一致を探す必要がありますか? それが問題かどうかはわかりませんが、ハッシュマップではなくリンクされたハッシュマップです

4

2 に答える 2

2

ドキュメントによるとHashMap#put

このマップで、指定された値を指定されたキーに関連付けます。マップに以前にキーのマッピングが含まれていた場合、古い値が置き換えられます。

したがってput、同じキーと新しい値を使用して呼び出すだけで、置き換えが行われます。

これは、からメソッドをLinkedHashMap継承するためにも当てはまります。putHashMap

于 2012-07-10T20:04:23.717 に答える