Java 小模块之--统计字符串中元素个数

Java 小模块之--统计字符串中元素个数

曾经看过我Stream或者Guava类库等文章的小伙伴应该很明白我这篇博文的意义所在了
一是给读者提供综合的博文入口 二是自己也总结一下思路
ps: 之前没看过小编文章的小伙伴也不要紧 可以先看下本文所介绍的几种处理方法 如果觉得还不错 可以点击文章末尾的链接跳转具体页面进行探讨

普通方式(Map)

Map map1=new TreeMap<>();
String str="112221324kassxsbx";
int count;
//遍历字符串 用字符串指定下标的值做运算
for(int i=0;ilog(k+"出现次数"+v));
//        1出现次数3
//        2出现次数4
//        3出现次数1
//        4出现次数1
//        a出现次数1
//        b出现次数1
//        k出现次数1
//        s出现次数3
//        x出现次数2

jdk8 Stream处理

String str="1233ADddsd";
/**这里将字符串转换为字符数组再转换为集合 
利用了Hutool的万能转换器的技术*/
var treemap=new TreeMap<>(toList(convert(char[].class, str))
                    //将集合转换为Stream
                    .stream()
                    //排序Stream中的元素
                    .sorted()
                    //利用数据分组和分组后子集处理技术 
                    //将数据按照Stream中每个元素本身进行分组 并将每组元素个数返回
                    .collect(Collectors.groupingBy(ic->ic,Collectors.counting())));
//遍历集合
treemap.forEach((k,v)->log(k+"出现的次数"+v));
//        1出现的次数1
//        2出现的次数1
//        3出现的次数2
//        A出现的次数1
//        D出现的次数1
//        d出现的次数3
//        s出现的次数1
是不是觉得这样已经简便了很多 但是不要急 我们有更好的

Guava 类库处理

String string="1234234qwew";
//利用Guava中的新集合类型 Multiset 存储数据的特性
Multiset create = HashMultiset.create();
//字符串转换为集合的技术 依旧利用Hutool中的万能转换器 实在是方便啊!!!
create.addAll(toList(convert(char[].class,string)));
//结合Stream的查重和排序对集合中元素进行过滤
create.stream().distinct().sorted().forEach((ss)->log(ss+"出现和贺词"+create.count(ss)));
//        1出现和贺词1
//        2出现和贺词2
//        3出现和贺词2
//        4出现和贺词2
//        e出现和贺词1
//        q出现和贺词1
//        w出现和贺词2

到这里代码就又简便高级许多吧 但是我们还有更好的

Hutool 类库处理

String string="1234234AqAw34qw";
/**利用 IterUtil 下的countMap :
        根据集合返回一个元素计数的Map,
        所谓元素计数就是假如这个集合中某个元素出现了n次,
        那将这个元素做为key,n做为value*/
Map countMap =new TreeMap(countMap(toList(convert(char[].class,string))));
countMap.forEach((k,v)->log(k+" 出现了几次: "+v));
//        1 出现了几次: 1
//        2 出现了几次: 2
//        3 出现了几次: 3
//        4 出现了几次: 3
//        A 出现了几次: 2
//        q 出现了几次: 2
//        w 出现了几次: 2
最后这一行代码的解决方式大家可否喜欢呐!!!

你可能感兴趣的:(java)