РЕДАКТИРОВАТЬ: весь код и сценарий создания базы данных можно найти в http://gitorious.org/scheator. Скрипт базы данных находится в схеме / .
У меня есть следующий код 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());
Ничего не удаляется из списка, т. Е. Первый и последний отпечатки печатаются одинакового размера (). Ключ также правильный (я проверял, что есть элемент с этим идентификатором).
Однако, и это мой вопрос, если я добавлю такие значения:
Integer id = rs.getInt(FIELDS[0]);
String name = rs.getString(FIELDS[1]);
Data team = new Data(id, name);
list.put(id, team);
Код работает! Разве parseInt () не должен создавать аналогичный ключ для getInt ()? Почему вторая версия работает, а первая нет? Я потратил целый час на отладку, пока не нашел причину, и до сих пор не могу понять причину.