如何从ARRAYLIST中删除重复值

时间:2012-06-30 07:05:39

标签: c#

我有一个arraylist包含来自不同数据库的值,但它存储了一些重复值,因此,我想删除重复值并仅在ARRay列表中存储唯一值。

那么,这怎么可以实现?

提前致谢... Mitesh

6 个答案:

答案 0 :(得分:11)

让我们尝试另一种方法。而是删除重复项,避免添加任何重复项。这在您的环境中可能更有效。 这是一个示例代码:

ArrayList<String> myList = new ArrayList<string>();
foreach (string aString in myList)
{
    if (!myList.Contains( aString ))
    {
        myList.Add(aString);
    }
}

答案 1 :(得分:4)

您可以使用HashSet替换ArrayList。来自文档:

The HashSet<T> class provides high performance set operations. A set is a collection that contains no duplicate elements, and whose elements are in no particular order.

如果绝对有必要使用ArrayList,您可以使用一些Linq来删除Distinct命令的重复项。

var distinctItems = arrayList.Distinct()

答案 2 :(得分:4)

使用ArrayList时可以使用此代码

ArrayList arrayList;
//Add some Members :)
arrayList.Add("ali");
arrayList.Add("hadi");
arrayList.Add("ali");

//Remove duplicates from array
  for (int i = 0; i < arrayList.Count; i++)
    {
       for (int j = i + 1; j < arrayList.Count ; j++)
           if (arrayList[i].ToString() == arrayList[j].ToString())
                 arrayList.Remove(arrayList[j]);
    }

答案 3 :(得分:2)

如果可以,您应该使用HashSet或任何其他设置类。这种操作效率更高。 HashSet的主要默认值是元素的排序不能保证与原始列表保持一致(根据您的规范,可能会有问题,也可能不会出现问题)。

否则,如果您需要保留顺序,但只需要在枚举值时删除重复项,则可以使用linq中的Distinct方法。请小心,不要运行此查询并在每次修改arraylist时复制结果,因为它可能会影响您的表现。

答案 4 :(得分:1)

        Hashtable ht = new Hashtable();
        foreach (string item in originalArray){
            //set a key in the hashtable for our arraylist value - leaving the hashtable value empty
            ht[item] = null;
        }

    //now grab the keys from that hashtable into another arraylist
    ArrayList distincArray = new ArrayList(ht.Keys);

答案 5 :(得分:0)

如果必须使用ArrayList,请使用排序方法。 这是一个很好的链接@ Sort Method of ArrayList。 对列表进行排序后,使用算法迭代/比较所有元素并删除重复项。

玩得开心,

Tommy Kwee