java字符串统计字母个数_java8 统计字符串字母个数的几种方法总结(推荐)
1.统计字符串字母个数(并且保持字母顺序)
比如: aabbbbbbbba喔喔bcab cdabc deaaa
目前我做知道的有5种方式噢,如果你还有更好的,欢迎赐教
//方式1
public static void lettercount1(string s) {
s=s.replaceall(" +", "");
//1,转换成字符数组
char c[]=s.tochararray();
map tree=new treemap();
for (int i = 0; i < c.length; i++) {
//第一次:a,1
//第二次:a,2
//2,获取键所对应的值
integer value=tree.get(c[i]);
// 反编译:integer value = (integer)tree.get(character.valueof(c[i]));
//3,存储判断
tree.put(c[i], value==null? 1:value+1);
}
//如果要求结果格式:a(5)b(4)c(3)d(2)e(1)
stringbuilder sbu=new stringbuilder();
for(character key:tree.keyset()){
integer count=tree.get(key);
sbu.append(key).append("(").append(count).append(")");
}
//将sbu转换为字符串
system.out.println(sbu.tostring());
}
//方式2 使用流
//这个在测试特殊字符,比如\ \n时,他的顺序会不对,这个是map造成的
//解决办法使用treemap
public static void lettercount2(string s) {
s=s.replaceall(" +", "");
treemap result = arrays.stream(s.split(""))
.sorted()
// .collect(collectors.groupingby(function.identity(),collectors.counting()));
.collect(collectors.groupingby(function.identity(),treemap::new,collectors.counting()));
system.out.println(result);
}
//方式3 使用collections.frequency
//其实就是字符串变成集合存每个字串,把每个字串循环跟集合比较
public static void lettercount3(string s) {
s=s.replaceall(" +", "");
list list=arrays.aslist(s.split(""));
map map=new treemap();
for (string str : list) {
map.put(str, collections.frequency(list, str));
}
system.out.println(map);
}
//方式4
public static void lettercount4(string s) {
s=s.replaceall(" +", "");
string[] strs = s.split("");
map map=new treemap();
for (string str : strs) {
map.put(str, stringcount(s, str));
}
system.out.println(map);
}
//方式5
public static void lettercount5(string s) {
s=s.replaceall(" +", "");
string[] strs = s.split("");
map map=new treemap();
for (string str : strs) {
map.put(str, stringcount2(s, str));
}
system.out.println(map);
}
//巧用split
public static int stringcount(string maxstr, string substr) {
// 注意
// 1.比如qqqq,没有找到,则直接返回这个字符串
// 2.比如qqqjava,末尾没有其他字符,这时也不会分割,所以可以添加一个空格
// 3.java11开头没有字符,没有关系,自动空填充
// 4.对于特殊字符,要注意使用转义符
int count = (maxstr + " ").split(substr).length - 1;
// system.out.println("\"" + minstr + "\"" + "字符串出现次数:" + count);
return count;
}
//如果要不区分大小写,则compile(minstr,case_insensitive)
public static int stringcount2(string maxstr, string substr) {
int count = 0;
matcher m = pattern.compile(substr).matcher(maxstr);
while (m.find()) {
count++;
}
return count;
}
2.统计字符串的单词个数(只限英文)
这个其实跟上面一样的,下面只写一个简洁的方法
public static void wordstringcount(string s) {
//这里开始是字符串,分割后变成字符串流
map result = arrays.stream(s.split("\\s+"))
.map(word -> word.replaceall("[^a-za-z]", ""))
.collect(collectors.groupingby(function.identity(),collectors.counting()));
system.out.println(result);
}
3.统计文本单词个数(只限英文)
//统计一个文本中单词的个数
public static void wordfilecount(string path) throws ioexception{
//这里一开始字符串流
//先分割
//在变成字符流
//在筛选
map result = files.lines(paths.get(path),charset.defaultcharset())
.parallel()
//字符串流--分割--字符串流
.flatmap(str->arrays.stream(str.split(" +")))
.map(word -> word.replaceall("[^a-za-z]", ""))
//去掉空
.filter(word->word.length()>0)
.collect(collectors.groupingby(function.identity(),collectors.counting()));
system.out.println(result);
}
4.其他不相干的
我们知道,可变参数列表,可以不传参数的
对于
public void testname() {
system.out.println("a");
}
public void testname(string ... s) {
//不传参数,s会默认初始化一个对象
system.out.println("b");
}
此时调用testname() 打印什么呢?,会打印a,会自动匹配参数真正为空的方法
以上这篇java8 统计字符串字母个数的几种方法总结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。
希望与广大网友互动??
点此进行留言吧!
java字符串统计字母个数_java8 统计字符串字母个数的几种方法总结(推荐)相关推荐
- python列表统计每个元素出现次数_python 统计list中各个元素出现的次数的几种方法...
利用字典dict来完成统计 举例: a = [1, 2, 3, 1, 1, 2] dict = {} for key in a: dict[key] = dict.get(key, 0) + 1 pr ...
- python统计字典里面value出现的次数_python 统计list中各个元素出现的次数的几种方法...
利用字典dict来完成统计 举例: a = [1, 2, 3, 1, 1, 2] dict = {} for key in a: dict[key] = dict.get(key, 0) + 1 pr ...
- python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...
html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...
- java中map嵌套map_java中遍历MAP,嵌套map的几种方法
java中遍历MAP的几种方法 Map map=new HashMap(); map.put("username", "qq"); map.put(" ...
- java实现生日提醒_asp实现的可以提醒生日的几种方法附代码
asp实现的可以提醒生日的几种方法附代码 更新时间:2008年06月20日 08:44:52 作者: asp提醒生日的原理一般就是把用户的出生日期和当前日期对比,如果少于几天则提醒显示,下面是几种 ...
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- java json解析 代码_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- java 获取键盘点击_Java中获取键盘输入值的三种方法介绍
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...
- java 获取星期几_java中获取日期是星期几的两种方法
java中取得指定日期是星期几可以采用下面两种方式取得日期是星期几:(推荐:java视频教程) 1.使用Calendar类//根据日期取得星期几 public static String getWee ...
最新文章
- Linux下查看Apache的版本号
- Docker的4种网络模式
- Android Studio中引入RecyclerView的v7包
- K8S报错:controller-manager Unhealthy Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252
- LinkedHashMap实现LRU缓存算法
- Docker-Compose 一键部署Ningx+.Net Core+Redis集群
- ★★★常用的【兼容IE和火狐FF】等浏览器的js方法★★★★★★★★
- Windows10安装ubuntu 20双系统
- 《VMware Virtual SAN权威指南》一2.2.2 VSAN Ready Nodes
- verilog语法学习心得
- 世界上手机号码最长和最短的国家
- 360路由器v2刷第三方固件_不走弯路:小米路由器3G 刷Padavan固件简单教程
- “我消灭你,但与你无关” 请接受跨界打劫!
- 多元相关性分析_NAR:宏基因组网络分析工具MetagenoNets
- 女人一生必须拥有的珍珠
- android控制动态按钮,Android编程动态按钮实现方法
- 【基因调控网络】Gene regulatory networks modelling using a dynamic evolutionary hybrid(ENFRN ,动态进化混合模型2010)
- 央视揭秘“微商传销”:通过朋友圈炫富发展下线
- lepus mysql 复制监控_lepus 天兔监控Mysql部署
- TiDB HTAP特性的应用场景简析
热门文章
- windows7下安装centos7系统或者单独装centos7
- 找不到模块“axios”或其相应的类型声明(vite)
- 影像组学一阶统计量含义白话介绍
- php开源在线点餐系统,php点餐网系统开源源码|口福科技php开源网上订餐系统平台版v1.9下载_红软基地...
- 区块链:数据要素市场化配置背后的“推手”
- [元带你学NVMe协议] NVMe 协议基本概念和架构
- 2020年贺岁杯围棋争霸赛今日开赛,AI+围棋看点十足
- U盘做PE装系统详细
- OpenCore黑苹果之拯救者14(HD4600)开启HDMI音频
- android 小米,华为,百度Push封装(准备阶段)