我有一个数组列表,其中包含来自不同数据库的值,但它存储了一些重复值,因此,我想删除重复值并仅在数组列表中存储唯一值。
如何才能做到这一点?
让我们尝试另一种方法。而是删除重复项,避免添加任何重复项。这在您的环境中可能更有效。这是一个示例代码:
ArrayList<String> myList = new ArrayList<string>();
foreach (string aString in myList)
{
if (!myList.Contains( aString ))
{
myList.Add(aString);
}
}
您可以将 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()
您可以在使用 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]);
}
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);
如果必须使用 ArrayList,请使用Sort方法。这是一个很好的链接@Sort Method of ArrayList。列表排序后,然后使用算法迭代/比较所有元素并删除重复项。
玩得开心,
汤米奎