首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Stream<String>转换为Stream<Character>

Stream<String>转换为Stream<Character>
EN

Stack Overflow用户
提问于 2018-03-16 07:30:47
回答 1查看 120关注 0票数 1

我试图从一个文件中读取,计数每个字母的频率,并打印结果。大写字母应视为其小写等价物。我有一个示例代码,用于计数文件中不同单词的频率:

代码语言:javascript
运行
复制
Pattern pattern = Pattern.compile("\\s+");
Map<String, Long> wordCounts =
        Files.lines(Paths.get("myFile.txt"))
                .flatMap(pattern::splitAsStream)
                .collect(Collectors.groupingBy(String::toLowerCase, TreeMap::new, Collectors.counting()));

我要修改这个代码来计数字母。我相信,我的大部分困难是理解随着代码的发展,对象会变成什么,以及我能对结果做些什么。我知道Files.lines()输出一个流字符串,其中每个字符串实际上是文件中的一行。在this answer中,我知道可以用以下代码将字符串转换为流字符:

代码语言:javascript
运行
复制
Stream<Character> sch = "abc".chars().mapToObj(i -> (char)i);

但是,我无法完全找到一种方法来使用它来转换流字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-16 07:34:32

使用flatMap(),您可以将流元素映射到新的流中。

在原始代码中,用.flatMap(pattern::splitAsStream)将一行映射为文字,但您也可以轻松地用.flatMap(s -> s.chars().mapToObj(i -> (char)i))将该行映射到字符。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49315272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档