编辑:整个代码和数据库创建脚本可以从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());
没有从列表中删除,即第一个和最后一个打印打印相同的 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() 类似的键吗?为什么第二个版本可以用,第一个不行?我花了一个小时调试这个,直到我找到原因,我仍然无法弄清楚原因。