从arraylist中删除重复的条目

时间:2013-04-01 09:18:16

标签: c# .net visual-studio-2010

我有一个arraylist“Templist”在一段时间后我看到很多重复的值被添加到arraylist,所以我想删除重复。当我用Google搜索时,我发现了一些解决方案,但大多数都令人困惑。它告诉了整数,并找到并删除重复的一些告诉使用distinct,某处告诉使用hashlist。任何方式我不想用其他结构取代Arraylist。任何人都可以提供逻辑来防止arraylist重复吗?

我现在拥有的代码是

 public class Templist : ArrayList
 {
   //some logic behind arraylist
 }                     Templist items = new Templist();

                       if (!(obj is Testobject) && !(obj is Leafobject))
                       {
                          items.Add(obj);
                       }


                    if (items.Count > 0)
                    {
                       SSendObjectCollection(items);
                    }

                static public void SendObjectCollection(Templist col)
                {
                  try 
                  {
                       col.Sort();
                  }
                    catch(System.Exception exception)
                    {
                    }

                }

更新

我做了这段代码

public static string[] RemoveDuplicates(string[] s)
 {
     HashSet<string> set = new HashSet<string>(s);
     string[] result = new string[set.Count];
     set.CopyTo(result);
     return result;
 }

然后我调用exisitng函数SendObjectCollection() 像RemoveDuplicates(col); 但它是在抛出错误,任何人都可以指导我这里出了什么问题吗?

2 个答案:

答案 0 :(得分:3)

您必须解决两个问题。首先,您必须使用以下方法删除重复值:

myArray = new Arraylist(myArray.Distinct().ToArray());

并在向数组列表添加值之前检查重复:

if(myArray.indexOf("value") == -1) {myArray.Add("value");}

希望这个帮助

答案 1 :(得分:1)

请提供更多信息,例如将项目添加到ArrayList中的位置。无论如何,你可以使用

ArrayList.Contain(somevalue) 

在添加之前检查它是否存在于ArrayList中以避免重复