如何检查列表是否包含字符串或后跟该字符串的任何数字? 我需要在列表中添加字符串。在列表中添加它时,我必须检查该列表中是否已存在该字符串。如果是这样,需要插入具有整数计数的字符串。 也就是说,如果name已经存在,则意味着它应该作为“Name1”插入。如果我再次添加Name意味着它应该作为name2插入。等等... 我怎样才能做到这一点?
List<Names> NameList=new List<Names>();
Name name=new Name();
name.Name="Name";
NameList.Add(Name);
Name name1=new Name();
name1.Name="Name";
NameList.Add(Name1);
Name name2=new Name();
name2.Name="Name";
NameList.Add(Name2);
Public class Name
{
string Name {get;set; }
}
答案 0 :(得分:1)
您的代码无法编译,但我假设您正在讨论List<string>
。如果是这样,算法可能是:
string val = "Name";
string toInsert = val;
int n = 1;
while(list.Contains(toInsert))
{
toInsert = val + n++;
}
list.Add(toInsert);
答案 1 :(得分:0)
您应该查看HashSet<T>
课程。
有了这个,你可以在O(1)中进行查找。但请注意,这会使用类的Equals()
和GetHashCode()
方法来检查是否相等。因此,要么将简单的字符串放入集合中进行检查,要么为Name类编写适当的IEqualityComparer
,并将其实例放入hashset的构造函数中。如果您需要帮助来撰写良好的GetHashCode
实施方案,请查看此SO question。