1.统计字符串字母个数(并且保持字母顺序)
比如: aabbbbbbbba喔喔bcab cdabc deaaa
目前我做知道的有5种方式噢,如果你还有更好的,欢迎赐教
//方式1
public static void lettercount1(string s) {
s=(" +", "");
//1,转换成字符数组
char c[]=();
map tree=new treemap();
for (int i = 0; i < ; i++) {
//第一次:a,1
//第二次:a,2
//2,获取键所对应的值
integer value=(c[i]);
// 反编译:integer value = (integer)((c[i]));
//3,存储判断
(c[i], value==null? 1:value+1);
}
//如果要求结果格式:a(5)b(4)c(3)d(2)e(1)
stringbuilder sbu=new stringbuilder();
for(character key:()){
integer count=(key);
(key).append("(").append(count).append(")");
}
//将sbu转换为字符串
(());
}
//方式2 使用流
//这个在测试特殊字符,比如\ \n时,他的顺序会不对,这个是map造成的
//解决办法使用treemap
public static void lettercount2(string s) {
s=(" +", "");
treemap result = ((""))
.sorted()
// .collect(((),()));
.collect(((),treemap::new,()));
(result);
}
//方式3 使用
//其实就是字符串变成集合存每个字串,把每个字串循环跟集合比较
public static void lettercount3(string s) {
s=(" +", "");
list list=((""));
map map=new treemap();
for (string str : list) {
(str, (list, str));
}
(map);
}
//方式4
public static void lettercount4(string s) {
s=(" +", "");
string[] strs = ("");
map map=new treemap();
for (string str : strs) {
(str, stringcount(s, str));
}
(map);
}
//方式5
public static void lettercount5(string s) {
s=(" +", "");
string[] strs = ("");
map map=new treemap();
for (string str : strs) {
(str, stringcount2(s, str));
}
(map);
}
//巧用split
public static int stringcount(string maxstr, string substr) {
// 注意
// 1.比如qqqq,没有找到,则直接返回这个字符串
// 2.比如qqqjava,末尾没有其他字符,这时也不会分割,所以可以添加一个空格
// 3.java11开头没有字符,没有关系,自动空填充
// 4.对于特殊字符,要注意使用转义符
int count = (maxstr + " ").split(substr).length - 1;
// ("\"" + minstr + "\"" + "字符串出现次数:" + count);
return count;
}
//如果要不区分大小写,则compile(minstr,case_insensitive)
public static int stringcount2(string maxstr, string substr) {
int count = 0;
matcher m = (substr).matcher(maxstr);
while (()) {
count++;
}
return count;
}
2.统计字符串的单词个数(只限英文)
这个其实跟上面一样的,下面只写一个简洁的方法
public static void wordstringcount(string s) {
//这里开始是字符串,分割后变成字符串流
map result = (("\\s+"))
.map(word -> ("[^a-za-z]", ""))
.collect(((),()));
(result);
}
3.统计文本单词个数(只限英文)
//统计一个文本中单词的个数
public static void wordfilecount(string path) throws ioexception{
//这里一开始字符串流
//先分割
//在变成字符流
//在筛选
map result = ((path),())
.parallel()
//字符串流--分割--字符串流
.flatmap(str->((" +")))
.map(word -> ("[^a-za-z]", ""))
//去掉空
.filter(word->()>0)
.collect(((),()));
(result);
}
4.其他不相干的
我们知道,可变参数列表,可以不传参数的
对于
public void testname() {
("a");
}
public void testname(string ... s) {
//不传参数,s会默认初始化一个对象
("b");
}
此时调用testname() 打印什么呢?,会打印a,会自动匹配参数真正为空的方法
以上这篇java8 统计字符串字母个数的几种方法总结(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。
希望与广大网友互动??
点此进行留言吧!