Grz*_*yla 2 java lambda java-stream
我试图理解 Java 中流的数据流。我的任务是将每个字母出现在字符串列表中
List<String> words = Arrays.asList("Welcome", "to", "the", "java", "world");
Run Code Online (Sandbox Code Playgroud)
进入
Map<String, Long>
Run Code Online (Sandbox Code Playgroud)
使用单线流。
我知道,首先我们可以从列表中流式传输每个单词,然后我需要将它分成多个字符,然后将每个字符作为键并将其出现作为值进行计数,最后返回整个映射。
理解起来太复杂了。有人可以向我解释怎么做吗?
正如 Willis 指出的那样,可以使用flatMapandgroupingBy收集器来完成。但是,预期的输出类型应该是Map<Character, Long>这样的:
Map<Character, Long> charFrequency = words.stream() //Stream<String>
.flatMap(a -> a.chars().mapToObj(c -> (char) c)) // Stream<Character>
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2300 次 |
| 最近记录: |