Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据结构设计问题_C#_Data Structures_Dictionary_C# 2.0_Arraylist - Fatal编程技术网

C# 数据结构设计问题

C# 数据结构设计问题,c#,data-structures,dictionary,c#-2.0,arraylist,C#,Data Structures,Dictionary,C# 2.0,Arraylist,我计划设计一个包含如下元素的数据结构 {1, 13, 15, 113, 117, 145} {2, 23, 27} {5, 53, 55, 511, 519} {9, 11} 到目前为止,我有两个想法 第一。建立字典(键、值) 第二。构建阵列列表(子阵列列表) 我计划在运行时访问元素。哪种解决方案更好 谢谢你的评论 [更新] 1.上面列出的int数字可能代表某些对象。如字典对象等 2.应用程序启动后,所有数据都将加载到内存中。然后只允许读。无需写入/添加/删除等。锯齿状数组如何 通过数组索引对

我计划设计一个包含如下元素的数据结构

{1, 13, 15, 113, 117, 145}
{2, 23, 27}
{5, 53, 55, 511, 519}
{9, 11}
到目前为止,我有两个想法

第一。建立字典(键、值)

第二。构建阵列列表(子阵列列表)

我计划在运行时访问元素。哪种解决方案更好

谢谢你的评论

[更新]
1.上面列出的
int
数字可能代表某些对象。如字典对象等

2.应用程序启动后,所有数据都将加载到内存中。然后只允许读。无需写入/添加/删除等。

锯齿状数组如何


通过数组索引对元素的访问是O(1)

这取决于什么对您更重要,更快的读取速度还是更快的写入速度?字典将提供对存储值的快速访问,但同时将值添加到字典将花费更长的时间

如果您有很多值需要多次访问,那么字典就是一种方法,如果您发现自己在另一个循环中循环一系列值,例如:

foreach(var item in ListA)
{
  foreach(var item in ListB)
  {
     // Match against all values in list B        

  }
}

在上面的例子中,如果列表B是一个字典而不是一个列表,这将是最好的,因为在列表a的每次迭代中,您都在列表中循环。随着ListB中元素数量的增加,上述代码的执行时间也会增加,但如果它是一个字典,则不会有太大区别。

如果要进行随机访问,则字典将是一个不错的选择。但请记住,您需要具有唯一的键(因为您要访问每个列表的第一个元素,因为每个列表的第一个键元素应该是唯一的)


如果要按顺序访问数据结构的元素,ArrayList更好

ArrayList
已经过时,即使在.NET2.0中也是如此(我假设这就是C#2.0编译器的目标?)。这里的重要问题是:如何查询此数据结构,以及初始化后它将如何变化(如果有的话)?您不想使用
List
而不是
ArrayList
?您需要提供更多的信息,您打算用它做什么?如果你想按键查找,字典是很好的,但是如果你只是想在列表上迭代,那是一种浪费…+1目前我正在做一个有很多
ArrayList
的项目,该项目始于2007年!我想知道在过去的三年里他们到底在做什么。上面的整数代表一些对象。比如字典对象。这就是为什么我必须使用ArrayList。非常感谢。
subArrayList1 {1, 13, 15, 113, 117, 145}
subArrayList2 {2, 23, 27}
subArrayList3 {5, 53, 55, 511, 519}
subArrayList4 {9, 11}
foreach(var item in ListA)
{
  foreach(var item in ListB)
  {
     // Match against all values in list B        

  }
}