【问题标题】:Reading a large text file and storing info in a hash table?读取大文本文件并将信息存储在哈希表中?
【发布时间】:2018-04-07 11:42:54
【问题描述】:

我使用 unity 和 c# 编写了一个程序,该程序使用我的 android 设备的 gps 位置,它会检测我是否在某个预定义的位置附近。 到目前为止,一切正常,程序检测到所有预定义的位置,并在我靠近它们时通知我。

我通过使用 streamreader 实现了这一点,它创建了一个字符串列表,该列表逐行读取文本文件并将其存储在检查器中的元素中。

每次 gps 位置更改时都会读取元素,使用循环到列表末尾,并检查元素是否与 gps 位置匹配。

我现在遇到的问题是我的数据库文本文件变得非常大,最终由于元素太多而出错。

文本文件格式如下

53.752 -2.481 位置 1。

51.551 -3.271 位置 2。

55.932 -4.037 位置3

等等……

数据库可能有1000个项目,其中第一个数字是纬度,第二个是经度,第三个是描述

我的问题是哈希表是否最适合此问题,如果是,我将如何将单独的项目添加到列表中。我假设纬度和经度是关键,位置是一对。

我试图找到示例,但我找到的所有信息都已添加到脚本中,即

    Hashtable mytable = new Hashtable();// create a new hashtable called mytable

    //add all the elements that you want in the format key followed by pair
    mytable.Add(1, "Location1");

而不是从文本文件中读取信息。

感谢您的帮助。

【问题讨论】:

  • 哈希不能解决文本文件大小问题。最好的解决方案是使用真实数据库而不是文本文件。你可以从 msdn 免费下载 SQL Express 来解决这个问题。
  • 包含数千个项目的列表应该没有问题。搜索此列表非常高效,即使在比较每个项目的纬度和经度时,在您真正遇到性能问题之前我也不会对此进行优化。如何阅读项目以创建列表是另一个问题,但与使用哈希表无关。将列表保存在内存中对我来说似乎是合乎逻辑的解决方案,而不是每次都从数据库/文件中读取它。
  • 感谢您的回复,您认为最好的方法是什么?我同意将其保存在内存中是最好的方法,而不是不断阅读它,但具体如何,我不太确定
  • 只需编写一个类Location,其属性为LatitudeLongitudeName,然后创建一个List<Location> 类型的列表。将列表填充一次并保留列表的变量,这没有什么神奇的。
  • 除非我误解了这就是我所拥有的(我认为)。这是我刚刚切入公共类位置的代码的 sn-p:MonoBehaviour { public List info = new List();公共 int 行号;无效开始(){信息。清除();行号 = 0; StreamReader r = File.OpenText(Application.persistentDataPath + "\\" + "myreadwritefile.txt"); while (!r.EndOfStream) {string eachline = r.ReadLine();行号 ++; info.Add(每一行); } r.Close();

标签: c# list unity3d hash gps


【解决方案1】:

好的,所以这种方式似乎可行。感谢大家的投入,绝对引导我朝着正确的方向前进。

public class Location : MonoBehaviour
{
   public int howmany;// how many lines are in the text file

  void Start()
    {
       List<string> fileLines = new List<string>(System.IO.File.ReadAllLines(Application.persistentDataPath + "\\" + "locationdatabase.txt"));
        howmany  = (fileLines.Count);
        Debug.Log(fileLines[4520]);// look at a particular line in the file
        Debug.Log(howmany);
}

}

【讨论】:

    猜你喜欢
    • 2021-03-02
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    相关资源
    最近更新 更多