查找数组的最低空闲位置

本文关键字:位置 数组 查找 | 更新日期: 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周期。我认为可以试着改进一下设计。