码迷,mamicode.com
首页 > 其他好文 > 详细

lua中table的实现

时间:2018-03-30 00:08:00      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:类型   数组实现   使用   哈希   保存   扩大   key值   执行   strong   

table 在lua中是一个非常常用的数据结构,可以用来存放各种类型的元素,那么就会让人好奇,它这么强大,它是用什么数据结构实现的呢

首先,考虑 table = {1, 2, 3, 4, 5, 6, 7, 8} 这样的结构, 为了获得最快的访问速度,它是用数组实现的

那么如果执行table[10000] = 10; 莫非要创建10000个元素的数组,没有值的都存为nil,这样的空间利用效率太低无法接受,所有除了数组段之外,table还有一个哈希段,10000这个key会存在哈希段中,当太大的key值导致存储空间利用率低于50%时,这个值会被放进哈希段中。

此外,使用string或者0和负数做key时,key都是保存在哈希段。当table表满时,哈希段会扩大,所有段内的数据重新哈希。

lua的table使用这种方式,在空间效率和访问效率上都很好。

lua中table的实现

标签:类型   数组实现   使用   哈希   保存   扩大   key值   执行   strong   

原文地址:https://www.cnblogs.com/elspsy/p/8673065.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!