我对构建哈夫曼编码原型感兴趣。为此,我想首先生成一个组成输入Java字符串的字符直方图。我在SO和其他地方看到了许多解决方案(例如:这里依赖于使用流的collect()
方法以及函数的静态导入。identity()和收集器。以非常具体和直观的方式计数()。
但是,当使用与我上面链接的代码非常相似的一段代码时:
private List<HuffmanTrieNode> getCharsAndFreqs(String s){
Map<Character, Long> freqs = s.chars().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
return null;
}
我从Intellij收到一个编译时错误,它告诉我没有符合供应商类型的参数来收集,这是其签名所要求的:
不幸的是,我是Java8流层次结构的新手,我不完全确定对我来说最好的行动方案应该是什么。事实上,对于我正在尝试做的事情来说,采用Map
的方式可能过于样板;如果是这样,请告知。