如何在C#中有效地合并两个集合,实现元素的交错排列?
时间: 2024-10-20 12:04:34 浏览: 22
Linq两个List集合取交集的实现
5星 · 资源好评率100%
在 C# 中,你可以使用 `Zip` 方法或 `Interlocked.InterlockedExchange` 函数结合循环来有效地合并两个集合并实现元素的交错排列。这里有一个使用 `Zip` 的例子:
```csharp
using System;
using System.Collections.Generic;
public List<int> InterleaveTwoLists(List<int> list1, List<int> list2)
{
if (list1.Count == 0 || list2.Count == 0)
return list1.Count > 0 ? list1 : list2;
List<int> result = new List<int>(Math.Max(list1.Count, list2.Count));
int index1 = 0, index2 = 0;
while (index1 < list1.Count && index2 < list2.Count)
{
result.Add(list1[index1]);
result.Add(list2[index2]);
index1++;
index2++;
}
// 如果其中一个列表还有剩余元素,直接添加到结果
while (index1 < list1.Count)
result.Add(list1[index1++]);
while (index2 < list2.Count)
result.Add(list2[index2++]);
return result;
}
// 使用示例
List<int> listA = new List<int> { 1, 3, 5 };
List<int> listB = new List<int> { 2, 4, 6 };
List<int> interleaved = InterleaveTwoLists(listA, listB);
```
这个函数会返回一个新的集合,其中包含来自两个输入列表的元素交替出现。
阅读全文