2012-06-30 97 views
0

我有一个arraylist包含来自不同数据库的值,但它存储一些重复的值,所以我想删除重复的值并在ARRay列表中只存储唯一的值。如何从ARRAYLIST删除重复的值

那么,这怎么可能实现呢?

在此先感谢... Mitesh

+1

你是如何在ArrayList中添加值的工作? –

+0

您使用的是哪个版本的.NET框架? –

+0

可能的重复[在C#中删除列表](http://stackoverflow.com/questions/47752/remove-duplicates-from-a-listt-in-c-sharp) – adatapost

回答

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() 
0

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

玩得开心,

汤米Kwee

+0

我不想排序,但想删除重复。 –

+0

@Mitesh,列表排序后,您可以通过迭代所有元素来删除重复项。 –

+0

Distinct方法自身删除重复项。如果您要使用linq方法,请使用正确的方法。 – Falanwe

2

如果可以的话,你应该使用HashSet,或任何其他集合类。这种操作更有效率。 HashSet的主要默认值是元素的排序不保证与原始列表保持一致(根据您的规范,这可能会也可能不是问题)。否则,如果您需要保留排序,但只需在列举值时列出删除的副本,则可以使用linq的Distinct方法。请小心,不要运行此查询,并在每次修改阵列列表时复制结果,因为它可能会影响您的表演。

11

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

ArrayList<String> myList = new ArrayList<string>(); 
foreach (string aString in myList) 
{ 
    if (!myList.Contains(aString)) 
    { 
     myList.Add(aString); 
    } 
} 
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); 
+1

在上面的代码添加行之前:Hashtable ht = new Hashtable(); – sanjay

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]); 
    } 
+1

非常优雅感谢。我有一个问题,重复的最后一个元素没有删除,但我解决了循环2次。 – Nicola

+0

您可以编辑答案并提交给其他成员;坦克很多 –