【发布时间】:2011-06-13 06:37:59
【问题描述】:
假设我有 500 个单词:
Martin
Hopa
Dunam
Golap
Hugnog
Foo
... + 494 more words
我有以下总共大约 85KB 的文本:
Marting 去给他买了自己的东西 来自 Hopa 商店,现在他正在寻找 尽其所能地入库 朋友杜南。他们正在计划 使用他们发现的 Golap 锁 Foo 镇的 Hugnog 商店。
>... text continues into several pages
我想生成以下文本:
-------去拿他自己的东西 来自 ---- 商店,现在他正在寻找 尽其所能地入库 朋友----。他们正在计划 使用他们发现的 ---- 锁 ----- 在--- 镇购物。
>... text continues into several pages
目前我正在使用commons方法:
String[] 500words = //all 500 words
String[] maskFor500words = // generated mask for each word
String filteredText = StringUtils.replaceEach(textToBeFiltered, 500words , maskFor500words);
- 在内存和 CPU 使用率方面,是否有另一种更有效的方法?
- 500 字的最佳存储是什么?文件、列表、枚举、数组...?
- 您将如何获得统计信息,例如替换了多少单词以及替换了哪些单词;以及每个单词被替换了多少次。
【问题讨论】:
-
您可以使用内存分析器来查看您正在使用多少内存。您可能期望 500 个字使用 64 KB 的内存。除非您使用手机运行此程序,否则您无需担心。
-
如果您希望您的代码是可配置的,也就是说,如果 500 个单词可能会更改,请为它们使用一个文件,但将它们读入其他结构。我会将单词读入一个数组(或一个 ArrayList,因为您可能并不总是能够预测会有多少)。如果您担心的话,数组将为您提供最快的读取访问并占用最少的内存。
标签: java string filter replace