【发布时间】:2010-03-01 19:03:17
【问题描述】:
编辑:可以从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() 类似的键吗?为什么第二个版本可以用,第一个不行?我花了一个小时调试这个,直到找到原因,我仍然无法弄清楚原因。
【问题讨论】:
-
key变量的类型是什么? -
什么是 rs ?它是什么样的物体?
-
在您的第一个示例中,您没有显示要添加的项目。你确定有一个带有那个键的项目吗?
-
@splix:整数。 @Eric:一个记录集。 @Robin:除了项目添加到地图的方式之外,项目完全相同。
-
@Eric rs 看起来将是来自数据库的 ResultSet
标签: java linkedhashmap