我有一个维护对象列表的“管理器”类。每个Object都有一个特定的“位置”,但这一点他们不知道,只有管理者知道。管理器必须为每个对象分配一个位置并维护其根据此“外部属性”排序的对象列表。
请注意,对象的位置可以随时更改。理想情况下,我应该能够随时立即获得 X 位置的元素或元素 X 的位置。
这是 C# 代码。我想知道这样做的干净或惯用方式是什么。
我想过做一个这样的内部类:
class SortedElement {
public Element Elem { get; set; }
public int Position { get; set; }
}
然后维护一个 SortedElements 列表。我不知道,这对我来说似乎很笨拙。例如,两个 SortedElements 可以具有相同的 Position。我觉得我缺少一个明显,干净的解决方案。我也可以让 Position 成为 Elements 本身的属性,但这在语义上没有意义,这意味着除了让我的生活更轻松之外,他们没有理由知道这一点。
请让我捂脸。
编辑:遵循 Eric Lippert 列出我的要求和睡个好觉的建议,我意识到我应该选择 aLinkedList<Element>
并将索引用作位置。实际上,这里最常见的操作将是在容器内的开头插入和删除,这在基于数组的容器上是昂贵的。感谢所有回复。