繁体   English   中英

替代RemoveAt和Insert列表项的方法

[英]Alternative to RemoveAt and Insert list items

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

让我详细说明我要实现的目标:

清单1

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

清单2

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

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

我还想用List2的列表项1的克隆替换List2的列表项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());

据我了解,您需要一个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

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

好吧,您可以像这样简单一些:

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

使用List of T将解决您的removeAt问题,并在后台使用Array进行插入,并将向您展示一些好的功能,这些功能将有助于摆脱这些忙碌的方法。

您可以使用List提供的某些功能,如下所示。

替换//将项目从一个项目复制到另一个项目

T班名单

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM