[英]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.