0

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

如何才能做到这一点?

4

6 回答 6

12

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

ArrayList<String> myList = new ArrayList<string>();
foreach (string aString in myList)
{
    if (!myList.Contains( aString ))
    {
        myList.Add(aString);
    }
}
于 2012-06-30T07:45:39.737 回答
4

您可以将 ArrayList 替换为HashSet。从文档中:

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()
于 2012-06-30T07:15:51.120 回答
3

您可以在使用 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]);
    }
于 2015-04-12T09:30:40.197 回答
2

如果可以,您应该使用HashSet或任何其他集合类。这种操作效率更高。HashSet 的主要默认值是不保证元素的顺序与您的原始列表保持相同(这可能是也可能不是问题,具体取决于您的规范)。

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

于 2012-06-30T07:40:13.000 回答
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);
于 2012-09-05T09:08:18.960 回答
-1

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

玩得开心,

汤米奎

于 2012-06-30T07:23:48.800 回答