Сообщение от Greymem
Спасибо за наглядный пример.
|
Всегда рад
Сообщение от Greymem
Интересно а как занести в переменную скажем 200 элементов? =) Это-же все равно придется создавать массив, лист или такую структуру?
|
Ну это главная особенность хеш таблицы, что в неё можно занести абсолютно всё. Даже ещё одну хеш таблицу
map.Insert("My Map", new TMap)
map.Insert("My List", new TList)
И еще вопрос, если не возражаете, как можно обновить данные по ключу? тоже INSERT или сначала удалить ключ, а потом снова создать? Последний проблемный.
|
Да, именно так.
Local key:String = "Object39"
If map.Contains(key) Then map.Remove(key)
map.Insert(key, newObject)
Где
newObject - новый объект
Когда мы вызываем Remove удаляется не только ключ, но и значение.
К сожалению тут происходит двойной поиск:
map.Contains(key) и map.Remove(key)
Этого можно избежать только работая напрямую с Node (звено хеш таблици)
Примерно так:
Local key:String = "Object39"
Local node:TNode = map._FindNode(key)
node._value = newObject
Собственно node содержит и _key(ключ) и _value(сам объект).
Но с методами/переменными, которые начинаются с "_" надо поострожнее. Это так сказать стиль писания на BlitzMax так как в нём нет инкапсуляции - приватные методы и поля начинают с нижнего подчёркивания.