簡體   English   中英

找到陣列的最低自由位置

[英]Finding the lowest free position of an array

我有一個數組的問題,我需要找到一個數組的最低自由位置來插入信息。 我該怎么做呢?

例如,我有數組string[] array = String[10] ,其中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 ... Furtrhermore追加thsat方式需要時間,這是真的,數組很小(yoiu說10個元素)但無論如何你將花費cpu周期每次進行線性搜索。 我認為可以嘗試改進設計。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM