remove () работает как положено.Например, для данной программы:
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("a", 1);
map.put("b", 2);
System.out.println("Before removal");
for( String s : map.keySet() ) {
System.out.println( s );
}
System.out.println("\n\nAfter removal");
map.remove("a");
for( String s : map.keySet() ) {
System.out.println( s );
}
}
}
Это выведет следующее:
Before removal
b
a
After removal
b
Единственное, о чем я могу думать, что происходит неправильно, это то, что объект узла вы пытаетесьУдалять в начале не тот же объект узла, как тот, который вы получаете от итератора.То есть они имеют одинаковый NodeID, но являются разными объектами.Возможно, вам стоит проверить возвращение функции remove ().
Редактировать: Ха, я не заметил ошибку String / Object, но по крайней мере мы шли по правильному пути;)