Lua Table根據value排序

2021-07-27 22:49:49 字數 858 閱讀 9595

使用lua開發需要把有用的資料全部存進table裡,lua也提供了乙個sort介面來給table排序,但是sort的實現也是基於氣泡排序,他預設table的key是從1開始的,

這樣就會造成當我們的key是一些特殊的標誌位,比如遊戲中揹包資料的guid,就會無法正常排序。所以我們需要單獨封乙個介面來實現通過value來排序的功能

下面就以裝備列表中,key為guid 通過裝備部位來排序的例子

function pairsbykeys(t)

local temptable =

for i,v in pairs(t) do

local temp = #temptable + 1

temptable[temp] = {}

temptable[temp].guid = i

temptable[temp].equippart = v.equippart

endtable.sort(a,function(m,n) return m.equippart < n.equippart end)

local count = 0

return function()

count = count + 1

local k = temptable[count]

local v = nil

if k then k = temptable[count].guid v = testc[temptable[count].guid] end

return k,v

endend

ok 

當我們需要排序的時候類似這樣 for i,v in pairsbykeys(t) do   就可以讓裝備補位從小到大輸出了

C map根據value排序

改變map根據key值排序策略可以過載 運算子 希望使用map根據value排序 map中元素型別是pair,第乙個想到的是過載pair的 運算子 但是標頭檔案為pair過載了 運算子 templateinline bool operator x,const pair t1 t2 y 直接過載的話,...

TreeMap根據value排序

首先自己寫乙個比較器,實現comparator介面,自己寫乙個構造方法,將乙個map集合傳遞進去。class valuecomparator implements comparator override public int compare string o1,string o2 else 使用 p...

Map根據value值進行分組

今天碰到同事在群裡問怎麼把乙個map根據value進行分組,當時我的第一想法是將value和key互換,多個value對應的不同key作為集合,如下 12 mapsatamap new hashmap final map groupmap new hashmap satamap.put a 1 sa...