我有一个arraylist包含来自不同数据库的值,但它存储了一些重复值,因此,我想删除重复值并仅在ARRay列表中存储唯一值。
那么,这怎么可以实现?
提前致谢... Mitesh
答案 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