我想知道一种从C#中的字符串数组中删除重复项的有效方法 .
例如,
string[] a = { "abc", "xyz","abc", "def", "ghi", "asdf", "ghi","xd", "abc" };
会变成,
string[] a = { "abc", "xyz","def", "ghi", "asdf", "xd" };
删除重复条目后如何填补空白?有没有办法在不使用额外数组存储元素的情况下执行此操作?
我使用的方法:
1) Sorted the array
2) Replaced the duplicate entries with null
3) Copied NOT null string to a new array.
但寻找一种优化的方法来做同样的事情 .
编辑:我使用的是.NET 2.0和VS 2005
4 回答
您可以使用HashSet:
您无法在.NET中调整数组大小,因此无论您使用何种方法删除重复项,都必须为结果创建一个新数组 .
您可以使用
HashSet<string>
轻松删除重复项:哈希集将数组中的项添加到自身,并自动丢弃重复项 . 由于哈希集使用哈希码来检查现有项目,这比排序项目要快一些,但结果当然没有排序 .
看看IEnumerable.Distinct() Method
如果使用.NET 3.0,您可以使用LINQ: