[英]Question on Data Structure Design
我打算设计一个包含这样的元素的数据结构,
{1, 13, 15, 113, 117, 145}
{2, 23, 27}
{5, 53, 55, 511, 519}
{9, 11}
到目前为止,我有两个想法。
1。 建立字典(键,值);
When Key = 1, Value = ArrayList(13, 15, 113, 117, 145)
When Key = 2, Value = ArrayList(23, 27)
When Key = 5, Value = ArrayList(53, 55, 511, 519)
When Key = 9, Value = ArrayList(11)
第2位。 建立一个ArrayList(SubArrayLists)
subArrayList1 {1, 13, 15, 113, 117, 145}
subArrayList2 {2, 23, 27}
subArrayList3 {5, 53, 55, 511, 519}
subArrayList4 {9, 11}
我计划在运行时访问该元素。 哪种解决方案更好?
感谢您的意见。
[ 更新 ]
1.上面列出的int
编号可能表示某些对象。 如字典对象等
2.应用程序启动后,所有数据将被加载到内存中。 然后只允许读取。 不需要写/添加/删除等
锯齿数组怎么样? http://msdn.microsoft.com/en-us/library/2s05feca.aspx
通过数组索引访问元素是O(1)。
这取决于什么对您来说更重要,更快的读取速度还是更快的写入速度? 字典将真正快速地访问存储的值,但同时将值添加到字典将花费更长的时间。
如果您有很多需要多次访问的值,那么如果您发现自己在另一个for循环示例中循环浏览值列表,则可以使用字典:
foreach(var item in ListA)
{
foreach(var item in ListB)
{
// Match against all values in list B
}
}
在上面的示例中,最好将List B是字典而不是列表,因为您是在ListA的每次迭代中遍历该列表。 随着ListB中元素数量的增加,上述代码的执行时间将增加,但是,如果它是一个字典,则不会有太大的区别。
如果您打算进行随机访问,那么词典将是一个不错的选择。 但是请记住,您需要具有唯一的键(因为您要转到每个列表的第一个元素,因为每个列表的键的第一个元素应该是唯一的)
如果您要顺序访问数据结构的元素,则ArrayList更好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.