查找数组的最低空闲位置
本文关键字:位置 数组 查找 | 更新日期: 2023-09-27 18:14:51
我有一个数组的问题,我需要找到一个数组的最低自由位置插入信息到它。我该怎么做呢?
例如,我有一个数组string[] array = String[10]
,其中数组的一些位置已经填满了,我需要在数组中选择一个位置,然后搜索回到位置0,其中位置是空闲的,然后返回该值。
这可能很简单,但我完全被难住了,谢谢你的帮助。
您需要遍历数组的所有索引,直到找到null
条目。
for(int i = myArr.Length - 1; i >= 0; i--)
{
if(myArr[i] == null)
{
myArr[i] = "no longer free!";
break;
}
}
如果你真的需要做这样的事情,你可能应该使用List<string>
而不是数组。
忽略您这样做的原因-其他人都告诉过您List<string>
-在下面的代码中,lowest
等于2。
var blah = new[] {"one", "two", null, "three"};
var lowest = Array.IndexOf(blah, null);
使用通用列表:
var myList = new List<string>();
//need to add a new item:
myList.Add("New item"); //no searching required
在大多数情况下,可以像使用数组一样使用列表,包括通过下标访问成员。
创建string[]
的新实例时,它的条目是null
。
现在只需要遍历数组,直到找到第一个null
条目。
string[] arrayOfStrings = new string[10];
int index = 0;
while(index < arrayOfStrings.Length && arrayOfStrings[index] != null) index++;
if(index < arrayOfStrings.Length) {
//arrayOfStrings[index] is lowest free position
} else {
//every position occupied
}
根据您的问题,List<string>
实例可能更好。
在这里,你可以使用它的Add
方法将字符串附加到最后一个位置
无需自己处理列表长度。
如果您需要一个数组作为最终结果,那么ToArray
方法就派上了用场。
List<string> listOfStrings = new List<string>();
listOfStrings.Add("FirstString");
listOfStrings.Add("SecondString");
string[] arrayOfStrings = listOfStrings.ToArray();
在c#中处理数组时,真的不应该编写这样的代码。您最好将字符串存储在List<String>
(或许多其他方便的集合)中,这基本上是为随机访问元素而设计的。当您需要一个实际的字符串数组时,在您的List
集合上调用.ToArray()
。
考虑使用List<string>
代替,它可以很容易地允许您添加元素。有一个带有null的数组稍后会返回给你,你将再次检查null…此外,追加这种方式需要时间,数组确实很小(您说的是10个元素),但无论如何,每次进行线性搜索都会花费cpu周期。我认为可以试着改进一下设计。