1. 程式人生 > >lua中table的實現

lua中table的實現

ron 執行 post 常用 什麽 pos 使用 ring table

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的實現