java hashmap 单词计数
【问题】
I am trying to code to read info from a text file, I need to find out how many times each word separated by white space occurs. I then need to output in alphabetical order with the count of each word. I am looking to use a TreeMap, keySet() and an Iterator. My code is very incomplete and I am quite stuck.
import java.util.HashMap;
import java.util.Map
public class WordCount<E extends Comparable<E>> {
private static Map<String, Integer> map = new HashMap<String, Integer>();
static {
fillMap(map, "Alice.txt");
}
private static void fillMap(Map<String, Integer> map, String fileName) {
}
}
【回答】
将文件拆成单词集合,之后按单词分组汇总即可,但JAVA编码复杂度较高,建议用SPL写好脚本再嵌入Java:
A |
|
1 |
=file("d:\\data.txt").read() |
2 |
=A1.words() |
3 |
=A2.groups(~:word;count(~):count) |
A1:从文本读取字符串
A2:将字符串拆分成单个单词组成的序列
A3:采用累计的方式对单词分组,并统计每种单词的数量
SPL的groups就是用java的hashmap实现的,性能很好。写好的脚本如何在应用程序中调用,可以参考Java 如何调用 SPL 脚本