Я тестировал реализацию HashMap в AS3 .
Я пробовал следующий код:
var map:IMap = new HashMap();
map.put("a", "value A");
map.put("b", "value B");
map.put("c", "value C");
map.put("x", "value X");
map.put("y", "value Y");
map.put("z", "value Z");
Затем я вызвал метод clear ():
map.clear();
Размер хеш-карты не стал 0, но был равен 1. Проблема в том, что когда ключ имеет значение "y", он не удаляется
Соответствующий код выглядит следующим образом:
protected var map:Dictionary = null;
public function HashMap(useWeakReferences:Boolean = true)
{
map = new Dictionary( useWeakReferences );
}
public function put(key:*, value:*) : void
{
map[key] = value;
}
public function remove(key:*) : void
{
map[ key ] = undefined;
delete map[ key ];
}
public function clear() : void
{
for ( var key:* in map )
{
remove( key );
}
}
Если я снова вызову функцию clear (), оставшаяся клавиша будет удалена:
if (size() != 0)
{
clear();
}
Кто-нибудь знает, по какой причине клавиша y не удаляется?