簡體   English   中英

在運行時之前通過巨大的文本文件創建樹結構(Java / Android)

[英]Creation of the Tree Structure from a huge text file before Runtime (Java/Android)

我目前正在開發一個用Java編寫的Android文字游戲,該游戲需要一些拼寫檢查方法來檢查玩家創建的單詞是否正確。 我有保存在文本文件(* .txt)中的正確單詞(波蘭語)的完整列表,但它很大,因為它包含近3百萬個單詞,大小為35 MB。 我進行了一些研究,發現保存此數據的最佳結構將是三元搜索樹,因為它具有時空性。

我的問題是如何在運行時之前通過巨大的文本文件創建三元搜索樹結構? 它不能在運行時執行,因為它會花費很多時間,而且我會用光內存(我只是出於好奇而嘗試過崩潰的方式)。 因此,我認為最好的方法是在編譯之前就創建這樣的結構,並將其作為某種資源添加到項目中,但是不幸的是我不知道該怎么做。 如果在編譯之前無法做到這一點,也許您知道如何在編譯期間創建這樣的結構?

更多細節:

  • 我真的想將此文本文件用作我的詞典,所以請不要建議我使用其他詞典服務。
  • 我需要在此數據結構上執行的唯一方法是:
    boolean contains(String word)這將告訴我該單詞是否正確。

如果您只需要.contains(String word)並且大小僅為35 MB,則建議使用HashSetHashSet<String> 它的行為就像字典一樣,而且由於Strings很好地可哈希,因此它的構建速度也非常快。 contains(word)也是具有O(1)性能的集合的內置方法。

如果您不想在運行時構建字典,則可以將其轉儲到數據庫一次(第一次運行您的應用程序),以后再從中讀取。

編輯:我不知道android應用程序的最大內存限制。 您可以通過將整個文件轉儲到可以非常有效地讀取和寫入的數據庫(只是一個文件)中來規避這一問題。 請檢查Android示例 如果您有eclipse,並且示例是從android sdk管理器安裝的,則可以啟動一個新項目(Android示例),從中選擇Searchable Dictionary示例並查看源,並查看其如何處理從.txt文件創建數據庫的過程。 上面的鏈接包含有關安裝示例的完整說明。 android數據庫(SQLite)明顯支持高達1TB的數據庫,因此您應該還不錯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM