3

我有很多对象(例如 10.000,或多或少)。每个对象都有 3 个值:

  1. 索引(十进制,如0,0 <= X <= 100.000,9);
  2. 纬度值;
  3. 经度值;

由于索引值,我需要执行一些搜索。这将是轻松的方法?List<MyObject>? 我知道有哈希表,但仅适用于 2 个值...

我从 .csv 文件中读取这些值,并将其存储在应用程序中。网络表单,.NET 4.5。

4

3 回答 3

4

就内存使用而言,最简单的方法是将它们放入一个结构中,并将它们保存在此类结构的数组中。根据您的说法,您无法真正将数据打包得更紧:两个双精度和一个小数将占用每个条目 32 个字节,并且结构数组不会在此之上添加任何每个项目的开销。

话虽如此,这会减慢您的编码速度,并且在实践中可能节省的时间太少。

于 2012-10-29T16:37:02.823 回答
2

你为什么不使用这样的字典:

public class Position
{
    public Latitude  Latitude  { get ; set ; }
    public Longitude Longitude { get ; set ; }
}

public Dictionary<decimal,Position> Positions ;

或者使用字典中的元组:

public Dictionary<decimal,Tuple<Latitude,Longitude>> Positions ;
于 2012-10-29T17:18:32.947 回答
1

我相信绝对最轻的方法是将您的值位掩码为无符号长整数,尽管它有点麻烦。

为了真正掌握哪种方法最有效,我建议使用测试值尝试所有方法并查看 sizeof() 的输出。这样你就可以确定它们的运行时内存大小是多少。

我建议使用自定义结构来保存您的值,元组也可以工作。

于 2012-10-29T16:37:46.410 回答