【发布时间】:2017-12-03 23:17:53
【问题描述】:
我对构建 Huffman Coding 原型很感兴趣。为此,我想首先生成构成输入 Java String 的字符的直方图。我已经在 SO 和其他地方看到了许多解决方案(例如:here 依赖于使用 collect() 的 Streams 方法以及 Function.identity() 和 Collectors.counting() 的静态导入以非常具体和直观的方式.
但是,当使用一段与我上面链接的代码非常相似的代码时:
private List<HuffmanTrieNode> getCharsAndFreqs(String s){
Map<Character, Long> freqs = s.chars().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
return null;
}
我从 Intellij 收到一个编译时错误,它基本上告诉我 collect 没有符合 Supplier 类型的参数,正如其签名所要求的那样:
不幸的是,我是 Java 8 Stream 层次结构的新手,我不完全确定对我来说最好的做法应该是什么。事实上,采用Map 的方式对于我正在尝试做的事情来说可能是太多的样板;如果是,请告知。
【问题讨论】:
标签: java-8 grouping histogram java-stream aggregation