0
点赞
收藏
分享

微信扫一扫

使用java8的Stream统计字符串数组中每一个字符出现的次数

才德的女子 2022-02-24 阅读 126


题目:有一个字符串数组​​["Hello world", "I am tom", "how are you!"]​​,要求统计每一个字符出现的次数

实现的方式有很多种,可以考虑​​HashMap​​如果key重复则计数加一。比较简单就不写这种方式

如果使用java8的stream来完成这道题,我们可以先将字符串数组转换为字符流,然后进行分组即可完成任务,代码如下:

Stream的方式实现统计

import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamCounting {
// 将字符串转换为Stream<Character>,再通过flatMap转换为一个大的Stream<Character>,进行分组
static Stream<Character> toCharacter(String str) {
final char[] chars = str.toCharArray();
final ArrayList<Character> list = new ArrayList<>();
for (char aChar : chars) {
list.add(aChar);
}
return list.stream();
}

public static void main(String[] args) {

Stream.of("Hello world", "I am tom", "how are you!")
.flatMap(x -> toCharacter(x)).collect(Collectors.groupingBy(Character::charValue, Collectors.counting())).forEach((x, y) -> {
System.out.println(x + "的个数:" + y);
});

}
}
控制台打印的结果
的个数:5
!的个数:1
a的个数:2
d的个数:1
e的个数:2
h的个数:1
H的个数:1
I的个数:1
l的个数:3
m的个数:2
o的个数:5
r的个数:2
t的个数:1
u的个数:1
w的个数:2
y的个数:1



举报

相关推荐

0 条评论