删除 Arraylist C# 2.0 中的重复项

本文关键字:Arraylist 删除 | 更新日期: 2023-09-27 18:32:39

我正在寻找的是将重复项从idFAV中删除,然后将其放入文本字段中。 有什么想法吗? 我正在研究 C# 2.0。

主.cs

    public void Page_Load(object sender, EventArgs e)
    {
        Session["FAVisible"] = new ArrayList();
    }

分享.cs

    public void Page_Load(object sender, EventArgs e)
             {
               ArrayList idFAV = (ArrayList)Session["FAVisible"];
               idFAV.Add(FileName));
               Session["FAVisible"] = idFAV;
               for(int i=0; i < DisplayCount; i++) 
               {
                     FileAttachedVisible.Text = idFAV[i].ToString();
               }
              }

删除 Arraylist C# 2.0 中的重复项

如果这是您使用ArrayList的所有位置,那么最简单的解决方法是在添加之前检查idFAV是否包含文件名,您将永远不会有重复项。或者,如果此数组列表正在某处修改,那么您可以创建一个新的 Arraylist 并遍历 idFAV 中的所有项目,并且仅在新列表中不存在时才添加。

如果您在添加之前检查它,则无需删除...例如:

           foreach (var iMeter in meter)
              {
                   if (!ip.Contains(iMeter.IP))
                    {
                          ip.Add(iMeter.IP);
                      }
              }

您可以尝试构建新的 ArrayList 并检查该列表中是否已包含要添加的任何新元素。

ArrayList result = new ArrayList();
foreach(var elem in idFav)
{
   if (!result.Contains(elem))
   {
       result.Add(elem);
   }
}

当然,这个解决方案的性能不是最好的(O(n^2))。最好尝试使用哈希集/二分法并在 O(n) 中执行此操作。

此外,要使 ArrayList 中的对象工作,需要实现 Equals。如果文件名是字符串,则无需担心。

这是完成任务的一种方法。我相信它可以简化,但我想列出过程中的每一步。

// Build ArrayList
ArrayList al = new ArrayList();
al.Add(1);
al.Add(1);
al.Add(2);
al.Add(2);
al.Add(3);
al.Add(4);
al.Add(4);
al.Add(4);
// Create List from ArrayList
List<object> oList = new List<object>(al.ToArray());
// Declare holder to distinct values
List<object> distinctValues = new List<object>();
// Get distinct values
oList.ForEach(delegate(object o) {
    if (!distinctValues.Contains(o)) {
        distinctValues.Add(o);
    }
});
// Copy original list as a list with duplicates
List<object> duplicateValues = new List<object>(oList);
// Remove the first instance of each distinct value
// leaving all duplicates
distinctValues.ForEach(delegate(object o){
    duplicateValues.Remove(o);
});
// Display distinct values
foreach (object o in distinctValues) {
    MessageBox.Show(o.ToString(), "Distinct");
}
// Display duplicate values
foreach (object o in duplicateValues) { 
    MessageBox.Show(o.ToString(), "Duplicate");
}
using System; using System.Collections;
using System.Collections.Generic;
using System.Linq;
class Program 
{ 
static void Main() List list = new List();
Console.WriteLine("number: "); int num = int.Parse(Console.ReadLine());
while (num > 0) { list.Add(num % 10); num /= 10; } list.Reverse();
List distinct = list.Distinct().ToList();
PrintValues(distinct);
static void PrintValues(IEnumerable distinct) 
{
 foreach (object value in distinct) Console.Write("{0}", value); 
  Console.WriteLine();
} 
}
}