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