Lua無法排序的問題 Key需要是連續的

2022-01-31 17:07:02 字數 1143 閱讀 3423

local x = ,

[2]=,

[3]=,

[5]=,

[6]=,

[7]=}

---從小到大排序

table.sort(x,function(a,b)

return a.x < b.x

end)

for i=1,10 do

if x[i] ~= nil then

print(x[i].x)

endend

列印出:5,6,7, 2,8,5

可以看到後面的資料並沒有進行排序,因為key不是連續的,中間存在斷層,lua只會對連續的部分進行排序。

local x = ,

[2] = ,

[10] = }

print("排序前:", table.tostring(x))

---從小到大排序

table.sort(x, function(a, b)

return a.x < b.x

end)

print("排序後:", table.tostring(x))

列印出:排序前和排序後資料是一樣的,同樣驗證lua只會對連續的部分進行排序

排序前:	,

2 = ,

10 = ,

}排序後: ,

2 = ,

10 = ,

}

local tb = ,

[2] = ,

[10] = }

--儲存全部的key

local keys = {}

for k, v in pairs(tb) do

table.insert(keys, k)

end--對key進行排序

table.sort(keys, function(a, b)

return a < b

end)

for i, key in ipairs(keys) do

local data = tb[key]

end

mapreduce對key值排序問題

最近在學習mapreduce程式設計遇到很多用mr實現按某一列值排序,或二次排序的類似問題,於是試著用mr實現各種排序問題,最終有點小總結 無需在key物件之外寫任何排序函式,mr會完成按key值排序,具體詳解如下 在這之前要先說一下writablecomparable介面。writable介面大家...

LUA中table的排序問題

畢業了,正式工作了,隨便寫寫。目前在實習,接觸的是u3d遊戲開發,設計到語言有erlang,c lua。最近在做揹包的排序的時候遇到的乙個小問題就貼出來了。檢視官方文件 第乙個引數是乙個table,第二個引數是外部函式,如下 table.sort showlist,sortfunc local fu...

Redis中大key問題,熱key問題的解決方案

遇到大key 熱key問題,主要是去拆分 大key問題 業務場景中經常會有各種大key的情況,比如 1.單個簡單的key儲存的value很大 例如排行榜資訊,key是固定的,value排行榜幾十萬的資料 2.hash set zset list中儲存過多的元素 以萬為單位 由於redis是單執行緒執...