【发布时间】:2014-10-16 08:59:07
【问题描述】:
我有一个字符串列表:
List<String> terms = ["Coding is great", "Search Engines are great", "Google is a nice search engine"]
如何获取列表中每个单词的频率:
例如{Coding:1, Search:2, Engines:1, engine:1, ....}
这是我的代码:
Map<String, Integer> wordFreqMap = new HashMap<>();
for (String contextTerm : term.getContexTerms() )
{
String[] wordsArr = contextTerm.split(" ");
for (String word : wordsArr)
{
Integer freq = wordFreqMap.get(word); //this line is getting reset every time I goto a new COntexTerm
freq = (freq == null) ? 1: ++freq;
wordFreqMap.put(word, freq);
}
}
【问题讨论】:
-
问之前有没有尝试过?
-
是的,我的方法是使用 2 个循环。那两个循环在另一个循环下。所以 3 个循环让它变得很慢
-
通过将其包含在您的问题中并将其移至 codereview,您可能会获得更好的帮助。
-
或者,如果它是您认为遇到问题的特定技术,请将一些(相关)代码放入问题中,在这里就可以了。
-
"...让它变得很慢" - 所以真正的问题根本不是 如何 去做,而是如何去做(更多)有效地 比您目前的方法? (我在下面提出的解决方案使用并行流,可能在这方面带来优势,但我还没有(还)以任何方式对其进行基准测试......)
标签: java string list arraylist