[英]How can I add to every item (string) inside of the List<int, string> dynamic id (int) which is actually position of every element inside?
我需要為List<int, string>
內的每個元素添加一個 id/key。
我嘗試了使用靜態 ID 的方法:
for (int i = 0; i < sen.Length; i++)
{
mySentences.Add(new Values { ID = i, Sentence = sen[i] });
}
但是這種方法似乎存在一些問題。 我想從列表中間刪除例如項目,然后被刪除項目下的每個項目都應將其 id 更改為 (n - 1)。
那么我該如何申請這個動態id呢?
您可以使用此方法在每次刪除時重新索引您的列表。
public List<Values> ReindexAfterDelete(List<Values> sen)
{
for (int i = 1; i<= sen.Count; i++) {
sen[i-1].ID = i;
}
return sen;
}
您可以在列表中存儲的每個項目中添加對列表的引用。 如果您訪問 ID 屬性,您可以通過List<T>
的IndexOf
方法獲取列表的索引:
public class Sentence
{
private List<Sentence> list;
public int ID
{
get
{
return list.IndexOf(sentence);
}
}
public Sentence(List<Sentence> list)
{
this.list = list;
}
}
用法是:
List<Sentence> mySentences = new List<Sentence>();
Sentence sentence = new Sentence(mySentences)
mySentences.Add(sentence );
這種方法有兩個缺點:首先,對ID
屬性的每次訪問都是 O(n),如果您有一個包含許多項目的列表,這可能會導致性能問題。 其次,如果您將相同的句子兩次添加到列表中,它將不起作用。
另一方面,最大的優勢是在每次插入、刪除等操作后更新 ID 不會有任何問題。 您可以相信ID
始終是正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.