2个不同长度的列表用于创建第三个列表
本文关键字:列表 三个 创建 用于 2个 | 更新日期: 2023-09-27 18:04:53
我有一个结构类似的列表(字母将是数据):
|A|B|C|D|E|F|G|
我还有一个类似的列表:
|A|B|E|G|
我想创建一个与第一个相同长度的第三个列表,但在第二个列表中不存在的列中放置"NULL",例如:
|A|B|NULL|NULL|E|NULL|G|
我怎样才能做到这一点?
你可以这样做:
var list1 = new List<string>() {"A", "B", "C", "D", "E", "F", "G"};
var list2 = new List<string>() { "A", "B", "E","G" };
var list3 = new List<string>();
int j = 0;
for(int i=0; i < list1.Count; i++)
{
var item = list1[i];
if (item == list2[j])
{
list3.Add(item);
j++;
}
else
{
list3.Add(null);
}
}
你可以使用Linq:
var result =
firstList.Select(p => secondList.Contains(p) ? p : null).ToList();
如果列表很大,这是O(N^2)的事实可能很重要。如果可以将secondList表示为HashSet,则可以提高性能,因为HashSet的集合成员查找是O(1)。
迭代第一个列表,对于每个元素,将其与第二个列表中相应的元素进行比较,如果有匹配输出,否则输出null,则继续执行,直到到达第一个列表的末尾。