我有一個維護對象列表的「管理器」類。每個對象都有一個特定的「職位」,但這是他們不知道的,只有經理知道這一點。管理員必須爲每個對象分配一個位置,並根據此「外部屬性」維護其對象列表。保留元素的排序列表,按該元素的外部屬性排序
請注意,對象的位置可以隨時更改。理想情況下,我應該能夠在任何時候立即獲得位置X處的元素或元素X的位置。
這是C#代碼。我想知道這是乾淨的還是慣用的方式。
我想過做一個內部類是這樣的:
class SortedElement {
public Element Elem { get; set; }
public int Position { get; set; }
}
然後保持SortedElements的列表。我不知道,對我來說似乎很笨拙。例如,兩個SortedElements可以具有相同的位置。我覺得有一個明顯的,乾淨的解決方案,我錯過了。我也可以將「位置」作爲「元素」本身的屬性,但它在語義上沒有意義,這意味着除了讓我的生活更輕鬆之外,沒有理由讓他們知道這一點。
請讓我走facepalm。
編輯:按照Eric Lippert的建議列出我的要求和一個良好的睡眠,我意識到我應該選擇LinkedList<Element>
並使用索引作爲位置。實際上,這裏最常見的操作將是在容器的開始處插入和移除,這在基於陣列的容器上是昂貴的。 感謝您的回覆。
你是說任何時候對象的位置都可以改變,因爲如果引入了另一個對象,它可能會基於該外部屬性插入到現有元素之間? – 2010-01-12 04:24:29
這將是一個可能的情況。另一個是經理決定交換兩個對象的位置。 – Asik 2010-01-12 04:29:20