【发布时间】:2010-10-05 20:36:21
【问题描述】:
我正在编写一个严格读取文本文件 (.txt) 的 Java 应用程序。这些文件可以包含超过 120,000 个单词。
应用程序需要存储所有 +120,000 个单词。它需要将它们命名为 word_1、word_2 等。它还需要访问这些词以对它们执行各种方法。
这些方法都与字符串有关。例如,将调用一个方法来说明 word_80 中有多少个字母。将调用另一种方法来说出 word_2200 中的特定字母。
另外,有些方法会比较两个词。例如,将调用一个方法来比较 word_80 和 word_2200 并需要返回哪个有更多的字母。将调用另一个方法来比较 word_80 和 word_2200 并需要返回两个词共享的特定字母。
我的问题是:由于我几乎只使用字符串,最好将这些单词存储在一个大的 ArrayList 中吗?几个小的 ArrayList?或者我应该使用许多其他存储可能性中的一种,例如 Vectors、HashSets、LinkedLists?
我主要关心的两个问题是 1.) 访问速度,以及 2.) 拥有尽可能多的预构建方法供我使用。
提前感谢您的帮助!!
哇!感谢大家对我的问题提供如此快速的答复。你所有的建议都对我帮助很大。我正在考虑并考虑您反馈中提供的所有选项。
请原谅我的任何模糊;让我来解决你的问题:
问)英语?
A)文本文件实际上是用英文写的书。在第二语言中出现的单词是罕见的——但并非不可能。我将文本文件中非英语单词的百分比设置为 .0001%问)家庭作业?
A)我现在正在微笑地看着我的问题的措辞。是的,它确实类似于学校作业。但是不,这不是家庭作业。Q) 重复?
一)是的。考虑到连词、冠词等,大概每五个左右的词。Q) 访问权限?
A)随机和顺序。一种方法当然有可能随机定位一个单词。一个方法同样可能希望在 word_1 和 word_120000 之间按顺序查找匹配的单词。这就引出了最后一个问题……Q) 遍历整个列表?
A) 是的。
另外,我计划发展这个程序以对单词执行许多其他方法。我再次为我的模糊性道歉。 (细节确实会改变世界,不是吗?)
干杯!
【问题讨论】:
-
当您说单词时,您是指正常的英语单词吗?每个平均大约 5-6 个字符,最大长度大约 30 个字符左右?
-
嗯...听起来像是家庭作业?如果是这样,这应该被标记。
-
我仍然认为这里没有足够的细节来提供真正好的建议。你实际上想要完成什么?与其只描述数据,还不如描述你试图用它做什么。当你的代码从数据结构中访问一个词时,它对那个词做了什么?
-
另外,无论您如何存储数组,请记住在从文本文件中读取每个字符串时对每个字符串进行 intern(),这样重复不会最终导致实际复制字符数据。