文章13 | 阅读 4791 | 点赞0
题目:有一个字符串数组["Hello world", "I am tom", "how are you!"]
,要求统计每一个字符出现的次数
实现的方式有很多种,可以考虑HashMap
如果key重复则计数加一。比较简单就不写这种方式
如果使用java8的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
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://yumbo.blog.csdn.net/article/details/113747539
内容来源于网络,如有侵权,请联系作者删除!