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
}
}