Java 小模块之--统计字符串中元素个数
曾经看过我Stream或者Guava类库等文章的小伙伴应该很明白我这篇博文的意义所在了
一是给读者提供综合的博文入口 二是自己也总结一下思路
ps: 之前没看过小编文章的小伙伴也不要紧 可以先看下本文所介绍的几种处理方法 如果觉得还不错 可以点击文章末尾的链接跳转具体页面进行探讨
普通方式(Map)
Map<Character, Integer> map1=new TreeMap<>();String str="112221324kassxsbx";int count;//遍历字符串 用字符串指定下标的值做运算for(int i=0;i<str.length();i++) { //每次循环前初始化count的值 count=1; //判断map集合中是否存在i下标对应的字符串的值 不存在则将count=1 存入 if(!map1.containsKey(str.charAt(i))) {map1.put(str.charAt(i), count);} //如果存在 则把count+1后存入 else { count+=map1.get(str.charAt(i)); map1.put(str.charAt(i), count); }}//遍历map集合map1.forEach((k,v)->log(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
- 关于对Stream的介绍和使用 可以参考小编的文章:
https://segmentfault.com/a/11...
是不是觉得这样已经简便了很多 但是不要急 我们有更好的
Guava 类库处理
String string="1234234qwew";//利用Guava中的新集合类型 Multiset 存储数据的特性Multiset<Object> 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
- 依旧给各位奉上关于Guava的文章:
https://segmentfault.com/a/11...
到这里代码就又简便高级许多吧 但是我们还有更好的
Hutool 类库处理
String string="1234234AqAw34qw";/**利用 IterUtil 下的countMap : 根据集合返回一个元素计数的Map, 所谓元素计数就是假如这个集合中某个元素出现了n次, 那将这个元素做为key,n做为value*/Map<?, Integer> 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
最后这一行代码的解决方式大家可否喜欢呐!!!
- 关于Hutool工具的解析 大家慢慢等待小编整理即可 到时候自然更新网址
- 在此先奉上API官方解析:https://www.bookstack.cn/read...