如何将字符串列表收集到地图中,其中每个字符串都是一个键?

托比

我正在做一个练习来计算短语中的单词。

我有一个正则表达式,我很高兴将短语拆分为单词标记,因此我可以使用基本循环完成工作 - 没问题。

但我想使用流将字符串收集到地图中,而不是使用基本循环。

我需要每个单词作为一个,现在,我只想要整数1作为值。在网上做了一些研究后,我应该能够将单词列表收集到地图中,如下所示:

public Map<String, Integer> phrase(String phrase) {
    List<String> words = //... tokenized words from phrase
    return words.stream().collect(Collectors.toMap(word -> word, 1));
}

我已经尝试过这个,以及几个变体(casting word, using Function.identity()),但不断收到错误:

The method toMap(Function<? super T,? extends K>, Function<? super T,? extends U>) in the type Collectors is not applicable for the arguments ((<no type> s) -> {}, int)

迄今为止,我发现的任何示例都只使用字符串作为值,否则表明这应该没问题。

我需要改变什么才能使这项工作?

他们是

要克服编译错误,您需要:

return words.stream().collect(Collectors.toMap(word -> word, word -> 1));

但是,这将导致 1 的所有值Map,并且如果您在 中有重复的元素words,您将得到一个例外。

您需要使用Collectors.groupingByCollectors.toMap使用合并函数来处理重复值。

例如

return words.stream().collect(Collectors.groupingBy(word -> word, Collectors.counting()));

或者

return words.stream().collect(Collectors.toMap(word -> word, word -> 1, Integer::sum));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何寻找另一个字符串中的字符串列表?

如何从字符串列表中的每个字符串中删除最后一个字符

将字符串列表连接到一个字符串haskell

如何将一个字符串拆分为一个长度为3的字符串列表?

如何将一个字符数组(字符串)传递到链接列表(队列)

如何将一个字符串列表与另一个字符串列表匹配?

如何使用C#使用字典将位于一个字符串列表中的键映射到位于另一个字符串列表中的值?

如何将一个字符串列表变成一个对象?

如何知道一个字符串是否属于python中字符串列表的组合?

如何将一个字符串分成2个字符串

将字符串列表复制到另一个字符串列表

排序元组列表,其中每个元组都是一个字符串

编写一个将字符串列表作为参数并返回包含每个字符串长度的列表的函数

如何将包含多个js语句的字符串拆分为字符串数组,每个字符串包含一个语句?

如何将一个字符串数组存储到另一个字符串数组中?

在Perl中,如何将一个字符串与其他字符串列表进行匹配?

列表理解:将每个字符串乘以一个列表

给定一个字符串列表,如何检查这些字符串是否在列表中?

Spark Notebook:如何根据列值过滤行,其中每个列单元格都是一个字符串数组?

将一个字符串附加/连接到字符串列表的元素(Python 3.5)

给定一个字符串,返回一个字符串,其中每个字符都是原始字符,有两个字符?

Ocaml - 对字符串列表中的每个字符串应用一个函数并返回一个新的字符串列表

Pyspark:如何将每个字符串 ID 关联到一个整数?

如何向列表中的每个字符串添加一个字符串?

如何生成另一个字符串出现的字符串列表

如何将列表的子字符串转换为一个字符串

我想让列表中的每个 url 都是一个字符串

PYthon - 将字符串列表转换为嵌套的字符串列表,其中每个列表包含每个字符串的元素

python - 如何将字符串列表中字符串的所有第一个字符、字符串的所有第二个字符等分组到字符串列表中