編集: コード全体とデータベース作成スクリプトはhttp://gitorious.org/scheatorにあります。データベース スクリプトは Schema/ にあります。
次の Java コードがあります。
抽象クラスで次のように定義された LinkedHashMap
LinkedHashMap<Object, Data> list;
このリストを次のように初期化する子孫クラス:
list = new LinkedHashMap<Integer, Data>();
次のような項目を追加します。
String id = rs.getString(FIELDS[0]);
String name = rs.getString(FIELDS[1]);
Data team = new Data(Integer.parseInt(id.trim()), name);
list.put(id, team);
今私がこれを行うとき:
System.err.println("delete() count: " + list.size());
System.err.println("delete() key value " + key);
Data obj;
obj = (Data)list.remove(key);
deletedList.put(key, obj);
System.err.println("delete() count: " + list.size());
リストからは何も削除されません。つまり、最初と最後の印刷は同じサイズで印刷されます()。キーも正しいです (その ID のアイテムがあることを確認しました)。
ただし、次のような値を追加すると、これが私の質問です。
Integer id = rs.getInt(FIELDS[0]);
String name = rs.getString(FIELDS[1]);
Data team = new Data(id, name);
list.put(id, team);
コードが機能します!parseInt() は getInt() と同様のキーを生成するべきではありませんか? 2 番目のバージョンは機能するのに、最初のバージョンは機能しないのはなぜですか? 理由がわかるまで、これをデバッグするのにかなりの時間を費やしましたが、それでも理由がわかりません。