发布网友 发布时间:2022-05-09 05:13
共1个回答
热心网友 时间:2024-01-28 14:05
推荐用java8的stream来进行有关集合数据统计问题
由题意得到的
输入:一个字符串str
输出:统计这个字符串按str中a,b,c出现的次数
但是这里并没有说区分大小写,所以代码里做了一下控制
参考代码如下(请用java8环境运行):
public static void main(String[] args) {解释一下:
s字符串就是要解析的字符串
isIgnoreCase 就是是否要忽略大小写,false的话表示不忽略,那A和a就算分别统计算一次,true的话,表示要忽略,那A和a就应该算两次
Pattern.compile("").splitAsStream(str): 把字符串str按照空字符串分割,其实就是把字符串中每个字符取出来组合成一个stream
map(item -> isIgnoreCase ? item.toLowerCase() : item):把其中每个字符映射,映射规则是要进行判断若isIgnoreCase为true,即忽略大小写,那字符都转化为小写,若不忽略,则用原来的字符即可
collect(Collectors.groupingBy(item -> item, Collectors.counting())):转化后,按照各自出现的字符进行统计,统计其中的次数
运行后最后把map打印一下就非常清楚了
isIgnoreCase 为false,不区分大小写
isIgnoreCase 为true,区分大小写,此时统计结果中无A的统计
最后直接再map中get("a")或者get("b"),把统计结果取出来即可