使用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...