繁体   English   中英

数据结构设计问题

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM