为两个列表交换索引后的数据
本文关键字:索引 交换 数据 列表 两个 | 更新日期: 2023-09-27 18:04:36
我有两个字节列表,我想在给定索引后交换它们的数据。
我有这两个列表
----0—1-----2-----3----索引
#### **** - #### #### -ListA
#### #### **** #### **** -ListB
,我想说的是,如果索引是2,像这样交换数据
#### **** **** #### ****
#### #### #### ####
我不太熟悉linq,也许有一个快速的方法来完成这个。
谢谢,
没有Linq
也可以做到。采用List.GetRange()
、List.RemoveRange()
、&List.AddRange()
您可以执行您正在寻找的交换,并且是快速的。
List<string> listA = new List<string>
{
"####",
"****",
"####",
"####"
};
List<string> listB = new List<string>
{
"####",
"####",
"****",
"####",
"****"
};
Console.WriteLine("Before: ");
Console.WriteLine("List A: {0}", String.Join(", ", listA));
Console.WriteLine("List B: {0}", String.Join(", ", listB));
Console.WriteLine();
SwapAfterIndex(listA, listB, 2);
Console.WriteLine("After: ");
Console.WriteLine("List A: {0}", String.Join(", ", listA));
Console.WriteLine("List B: {0}", String.Join(", ", listB));
SwapAfterIndex()
看起来像:
public static void SwapAfterIndex(List<string> listA, List<string> listB, int index)
{
if (index < 0)
{
return;
}
List<string> temp = null;
if (index < listA.Count)
{
temp = listA.GetRange(index, listA.Count - index);
listA.RemoveRange(index, listA.Count - index);
}
if (index < listB.Count)
{
listA.AddRange(listB.GetRange(index, listB.Count - index));
listB.RemoveRange(index, listB.Count - index);
}
if (temp != null)
{
listB.AddRange(temp);
}
}
结果:
Before:
List A: ####, ****, ####, ####
List B: ####, ####, ****, ####, ****
After:
List A: ####, ****, ****, ####, ****
List B: ####, ####, ####, ####
我不认为有2 List交换方法。您可以使用以下代码实现相同的功能:
public static void Swap2List(List<byte> firstList, List<byte> secondList, int index)
{
// TODO : Error handling not done.
for(int i = index; i < firstList.Length ; i++)
{
var temp = firstList[i];
firstList[index] = secondList[i];
secondList[i] = temp;
}
}