有没有一种更干净的方法可以使字典式访问列表?

时间:2020-05-27 12:37:59

标签: c# arrays list dictionary

我有一个块类,我希望它包含对在块中占据某些坐标的对象的引用(由int标识符表示)。由于许多对象没有碰撞,因此同一位置可能会被多个对象占据。块具有2个维度(x,y)。这是我在想达到的目的:

public class Chunk{

public List<int>[] objPresence;

}

这将形成一个列表数组(其中size = chunksizeX * chunksizeY),其中索引将是展平的x,y坐标,并且列表将包含该位置上的所有对象。 (列表中的每个int都是我给定对象的标识符)

所以要找到当前处于给定位置的对象,我会这样做:

listOfObjectsOnPosition = objPresence[ flattenIndex(x,y) ];

到目前为止还不错,但是现在如果我要检查一个特定对象是否在某个位置,我必须遍历列表,并且希望能够对此进行O(1)访问。 / p>

这是使用字典的替代方法:

public class Chunk{

public Dictionary<int,byte>[] objPresence;

}

并进行访问以查找特定对象:

objPresence[ flattenIndex(x,y) ].ContainsKey(objToSearch)

如果我只想让所有对象都在该位置,我也可以遍历字典键。

但是在这种方法中,因为我正在使用Dictionary,并且int键是对象的标识符,所以字典上的字节值浪费了内存,因为我不需要任何值。

是否有一种方法可以实现我在这里没有浪费字节的内容,或者有另一种更好的方法可以完全做到这一点?

谢谢!

0 个答案:

没有答案