C# 向列表或其他对象添加唯一项
我正试图找到一种有效的方法,向列表中添加唯一的数值。目前,我正在使用C# 向列表或其他对象添加唯一项,c#,dictionary,unique,C#,Dictionary,Unique,我正试图找到一种有效的方法,向列表中添加唯一的数值。目前,我正在使用字典对象。第一个值是生成的数字;不管它是什么,只要它的生成可以在相同的情况下重复。第二项是原件。所以,我想说: Dictionary<int,int> orderedList = new Dictionary<int,int>(MaxNoOfTimes); for (i = 0; i<MaxNoOfTimes, i++) { int j = getNewValue(); r
字典
对象。第一个值是生成的数字;不管它是什么,只要它的生成可以在相同的情况下重复。第二项是原件。所以,我想说:
Dictionary<int,int> orderedList = new Dictionary<int,int>(MaxNoOfTimes);
for (i = 0; i<MaxNoOfTimes, i++)
{
int j = getNewValue();
retry:
try
{
orderedList.Add(j,i);
}
catch (ArgumentException ex)
{
goto retry;
}
Dictionary orderedList=新字典(MaxNoOfTimes);
对于(i=0;i
for (i = 0; i<MaxNoOfTimes, i++)
{
int j = getNewValue();
while(orderedList.ContainsKey(j))
{
j = getNewValue();
}
orderedList.Add(j, i);
}
(i=0;i如何:
Hashset<int> orderedSet = new Hashset<int>();
while(orderedSet.Count < maxNoTimes)
{
int j = getNewValue();
orderedSet.Add(j);
}
为什么要使用i++
两次?是什么原因导致ArgumentException
?@jeroenvanevel当字典中已经存在元素时,您会得到ArgumentException
。我认为哈希集就是您要找的。它的“Add”方法返回一个布尔值,如果它是否被添加到集合中。@MarcinJuraszek:你说得对,错过了。@Ron:你为什么不检查一下它是否存在?你确定它有效吗?你没有改变j
,这是你入门的关键。我会尝试一下,但我唯一担心的是无限while循环的可能性。需要更多的测试,但我会说99%的时间是由于异常。现在,它太快了!谢谢!
var orderedDictionary = orderedSet.ToDictionary(i => orderedSet.ToList().IndexOf(i), i => i).OrderBy(i => i.Value);