删除 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的所有位置,那么最简单的解决方法是在添加之前检查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();
}
}
}