我有一个arraylist“Templist”在一段时间后我看到很多重复的值被添加到arraylist,所以我想删除重复。当我用Google搜索时,我发现了一些解决方案,但大多数都令人困惑。它告诉了整数,并找到并删除重复的一些告诉使用distinct,某处告诉使用hashlist。任何方式我不想用其他结构取代Arraylist。任何人都可以提供逻辑来防止arraylist重复吗?
我现在拥有的代码是
public class Templist : ArrayList
{
//some logic behind arraylist
} Templist items = new Templist();
if (!(obj is Testobject) && !(obj is Leafobject))
{
items.Add(obj);
}
if (items.Count > 0)
{
SSendObjectCollection(items);
}
static public void SendObjectCollection(Templist col)
{
try
{
col.Sort();
}
catch(System.Exception exception)
{
}
}
更新
我做了这段代码
public static string[] RemoveDuplicates(string[] s)
{
HashSet<string> set = new HashSet<string>(s);
string[] result = new string[set.Count];
set.CopyTo(result);
return result;
}
然后我调用exisitng函数SendObjectCollection()
像RemoveDuplicates(col);
但它是在抛出错误,任何人都可以指导我这里出了什么问题吗?
答案 0 :(得分:3)
您必须解决两个问题。首先,您必须使用以下方法删除重复值:
myArray = new Arraylist(myArray.Distinct().ToArray());
并在向数组列表添加值之前检查重复:
if(myArray.indexOf("value") == -1) {myArray.Add("value");}
希望这个帮助
答案 1 :(得分:1)
请提供更多信息,例如将项目添加到ArrayList中的位置。无论如何,你可以使用
ArrayList.Contain(somevalue)
在添加之前检查它是否存在于ArrayList中以避免重复