为什么不只使用列表字典?:
#pragma strict
import System.Collections.Generic;
var map = new Dictionary.<int,List.<int> >();
function Start () {
Add(2,1);
Add(2,2);
Add(2,3);
Add(3,0);
for(var kvp in map){
for(var v in kvp.Value){
Debug.Log("Key: "+kvp.Key + "Value: " +v);
}
}
}
function Add(key:int,value:int){
if (!map.ContainsKey(key) ){
map[key] = new List.<int>();
}
map[key].Add(value);
}
更新:
稍作修改以避免重复值:
var map = new Dictionary.<int,HashSet.<int> >();
function Add(key:int,value:int){
if (!map.ContainsKey(key) ){
map[key] = new HashSet.<int>();
}
if (map[key].Contains(value))return;
map[key].Add(value);
}
这些只是 C# 集合的包装器,因此对字典进行排序很简单:
function SortedKeys(){
var keys = new List.<int>(map.Keys);
keys.Sort();
return keys;
}
列表排序是 O(nlgn) 的平均情况。