如何在数组中插入值,同时保持顺序
本文关键字:顺序 数组 插入 | 更新日期: 2023-09-27 18:02:19
我有一个字符串数组,我想在中间的某个地方添加一个新值,但不知道怎么做。有人能帮我做这个方法吗?
void AddValueToArray(String ValueToAdd, String AddAfter, ref String[] theArray) {
// Make this Value the first value
if(String.IsNullOrEmpty(AddAfter)) {
theArray[0]=ValueToAdd; // WRONG: This replaces the first Val, want to Add a new String
return;
}
for(int i=0; i<theArray.Length; i++) {
if(theArray[i]==AddAfter) {
theArray[i++]=ValueToAdd; // WRONG: Again replaces, want to Add a new String
return;
}
}
}
你不能在数组中添加元素,数组的大小始终保持不变。
要得到一个添加了项的数组,你需要分配一个包含多一个项的新数组,并将原数组中的所有项复制到新数组中。
这当然是可行的,但效率不高。您应该使用List<string>
,它已经有一个Insert
方法。
这只在某些特殊情况下有效。
public static void AddValueToArray(ref String[] theArray, String valueToAdd, String addAfter) {
var count=theArray.Length;
Array.Resize(ref theArray, 1+count);
var index=Array.IndexOf(theArray, addAfter);
var array=Array.CreateInstance(typeof(String), count-index);
Array.Copy(theArray, index, array, 0, array.Length);
++index;
Array.Copy(array, 0, theArray, index, array.Length);
theArray[index]=valueToAdd;
}
这是一个示例,但它适用于Type
,您可能需要修改您需要的类型。这是递归复制数组的一个例子。
- 如何找到两种类型之间的最佳拟合的最小协变类型?
查看列表插入方法是如何实现的