0

一段时间后,我有一个数组列表“Templist”,我看到很多重复值被添加到数组列表中,所以我想删除重复项。当我用谷歌搜索时,我找到了一些解决方案,但其中大多数都令人困惑。有些地方在说明对arralist 进行排序并查找并删除重复项,有些地方告诉使用不同的地方,有些地方告诉使用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;
 }

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

4

2 回答 2

3

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

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

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

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

希望这有帮助

于 2013-04-01T09:31:57.947 回答
1

请包含更多信息,例如您在哪里将项目添加到 ArrayList。无论如何,你可以使用

ArrayList.Contain(somevalue) 

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

于 2013-04-01T09:35:24.260 回答