我需要一个带有行和列的多维数据结构。
{A , B}
我想在C
和A
之间插入B
。 {A, C, B}
。insert("A", 1, 5)
,其中A
是要插入的元素,1
是行,5
是< EM>列 修改
我希望能够像这样插入。
static void Main(string[] args)
{
Program p = new Program();
List<List<string()>> list = new List<List<string>()>();
list.Insert("RAWR", 1, 2); // RAWR is the element to insert, 1 is the row, 2 is the col.
list.Insert("Hello", 3, 5);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
}
当然这不起作用,因为该列表不支持此功能。我理解这段代码很糟糕,但我只是想了解一下我想要完成的事情
所以从某种意义上说,我将有一个用户选择将哪个ROW和COL插入元素。
答案 0 :(得分:2)
我认为列表清单应该可以正常工作:
IList<IList<T>> multiDim = new List<IList<T>>();
您可以像这样插入新行:
multiDim.Insert(atRow, new List<T>());
或在特定行中插入新元素:
multiDim[row].Insert(atColumn, myElement);
请注意,您需要在列表中包含足够的元素才能调用Insert
;否则,您将获得超出范围的异常。解决此问题的最简单方法是编写一个小实用程序方法,在插入之前添加空项:
private static Expand<T>(IList<T> list, int index) {
while (list.Count < index) {
list.Add(default(T));
}
}
按如下方式重写您的程序:
Expand(list, 1);
list.Insert(1, "HELLO");
Expand(list, 5);
list.Insert(5, "RAWR");
答案 1 :(得分:2)
也许Dictionary可能与元组一起使用,因为它是关键:
Dictionary<Tuple<int, int>, string> dict = new Dictionary<Tuple<int, int>, string>();
dict.Add(new Tuple<int, int>(1, 5), "A");
答案 2 :(得分:0)
SortedDictionary<int, T>
似乎非常合适。只需将按键放入字典即可。
var sparseArray = new SortedDictionary<int, string>();
sparseArray.Add(1, "notepad.exe");
sparseArray.Add(5, "paint.exe");
sparseArray.Add(3, "paint.exe");
sparseArray.Add(2, "wordpad.exe");