You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 如何将两个ArrayList合并为无重复元素的第三个列表

C# 合并两个ArrayList并去重实现方案

现有代码修正版

你原有嵌套循环的逻辑有误,直接调整为如下实现即可满足需求:

ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");

ArrayList list2 = new ArrayList();
list2.Add("1");
list2.Add("A");
list2.Add("2");
list2.Add("3");
list2.Add("C");
list2.Add("4");
list2.Add("D");

ArrayList list3 = new ArrayList();

// 先加入list1的全部元素
foreach (var item in list1)
{
    list3.Add(item);
}

// 遍历list2,仅添加不在list3中的元素
foreach (var item2 in list2)
{
    if (!list3.Contains(item2))
    {
        list3.Add(item2);
    }
}

// 验证输出可根据需求删除
foreach (var item in list3)
{
    Console.WriteLine(item);
}

Console.ReadLine();

这个方案基于ArrayList原生的Contains方法判断重复,逻辑简单直观,适合数据量不大的场景(比如已安装软件列表通常最多几百条,完全够用)。

更高性能的实现方案

如果后续你需要处理更大数据量的列表,可以用HashSet做中转,利用HashSet的自动去重特性和O(1)的查找效率,避免多次调用Contains带来的性能损耗:

HashSet<object> tempSet = new HashSet<object>();
// 依次添加两个列表的所有元素,HashSet会自动跳过重复项
foreach (var item in list1) tempSet.Add(item);
foreach (var item in list2) tempSet.Add(item);

// 转成目标ArrayList
ArrayList list3 = new ArrayList(tempSet);

可选优化建议

ArrayList是.NET早期的非泛型集合,存在类型不安全、需要装箱拆箱的问题。如果你的项目可以调整集合类型,更推荐用泛型集合List<string>存储软件名称,配合LINQ可以一行代码完成合并去重:

List<string> list1 = new List<string> {"A","B","C","D"};
List<string> list2 = new List<string> {"1","A","2","3","C","4","D"};
List<string> list3 = list1.Union(list2).ToList();

内容的提问来源于stack exchange,提问作者MrClayGiovanni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:45:05