使arraylist与众不同

时间:2011-05-18 17:55:37

标签: c# arraylist

我的arraylist中有重复项,并希望删除这些副本以使其区别开来。我尝试使用hastable来摆脱重复,但它破坏了秩序。如何在不更改广告订单的情况下使其与众不同?

3 个答案:

答案 0 :(得分:4)

怎么样:

using System.Linq;

myArrayList = new ArrayList(myArrayList.Distinct().ToArray());

var myArray = myArrayList.Distinct().ToArray();

答案 1 :(得分:0)

Hashtable听起来确实是一个不错的主意。

foreach object in the ArrayList:
if (object in hashtable)
{
   remove object from ArrayList. (instead of object you can use object's hash)
   // (notice, the ArrayList's indexes will change after you remove!)
}
else
{
   insert object to Hashtable.  (instead of object you can use object's hash)
}

在此次运行之后,您将只拥有每个对象的第一个实例。

请注意,您不必使用HashTable,即使是另一个ArrayList就足够了。不过我会使用哈希表,因为哈希表中的搜索/插入在平均情况下是O(1),而在arraylist中的二进制搜索是O(log(n))。

答案 2 :(得分:0)

塞巴斯蒂安是对的。从技术上讲,如果您尝试避免重复,请使用不支持重复的集合。使用Hashtable,循环遍历ArrayList并将其弹出。如果所有代码都是您的,请查看您是否可以重构,以便您不使用ArrayList