替代RemoveAt和Insert列表项

本文关键字:列表 Insert RemoveAt 替代 | 更新日期: 2023-09-27 18:04:34

我正在寻找一种更好的数据结构或方法来简单地替换动态数组中的对象。似乎列表是选择,但是我阅读并注意到RemoveAt和Insert的性能不如我希望的那么好。

让我详细说明我要达到的目标:

List1

  1. 清单项目1
  2. 清单项2
  3. 清单项目3

用于

  1. 清单项目1
  2. 清单项2

两个列表使用相同的对象类型。我想用List1[1]替换List2的空列表项——列表项1的克隆。我使用克隆,因此复制的列表项的值是一个单独的实例。

我还想用列表2的列表项1的克隆来替换列表2的列表项2。

下面是我想要实现的一些示例代码:

projCraneVertices.RemoveAt(projCraneVertices.Count - 4);
projCraneVertices.Insert((projCraneVertices.Count - 3), realCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 3);
projCraneVertices.Insert((projCraneVertices.Count - 2), projCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 2);
projCraneVertices.Insert((projCraneVertices.Count - 1), realCraneVertices[topPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 1);
projCraneVertices.Insert((projCraneVertices.Count), projCraneVertices[topPoint].clone());

替代RemoveAt和Insert列表项

我还想用list item的克隆替换List2的list item 2

嗯,你可以这样做更简单:

proCraneVertices[2] =  realCraneVertices[1].Clone();

根据我的理解,您需要一个Replace方法。试试这个扩展:

public static class Extensions
{
  public static void Replace<T>(this IList<T> list, int index, T item)
  {
    list[index] = item;
  }
}

调用:

  List<int> ints = new List<int>() { 1, 2, 3 };
  List<int> ints2 = new List<int>() { 4, 5, 6 };
  ints.Replace(0, ints2[0]);

以上将生成第一个列表- 4, 2, 3

使用List of T将解决removeAt和insert的问题,并将向您展示一些很好的函数,这些函数将有助于摆脱这些附加方法。

你可以使用List提供的一些函数,如下所示。

Replace//将条目从一个条目替换为另一个条目

T类列表