首页 >

Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数? – 网络|

表格怎么插横线打字,超级会员怎么点亮,icp备案 需要什么Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数? - 网络|Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数
  1. 数组的索引法
  2. 使用流(使用TreeMap)
  3. 巧用split
  4. 巧用Pattern

一、实现代码

importjava.util.*;
importjava.util.function.Function;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
importjava.util.stream.Collectors;

/**
*@author米兜
*@description
*@date2020/6/2622:23
*@modifiedby
*/
publicclassSum{
publicstaticvoidmain(String[]args){
Stringstr=“guanzhuchengxuyuanmidou”;

System.out.println(“———–1.数组的索引法【start】———–“);
count1(str);
System.out.println(“———–1.数组的索引法【end】———–“);

System.out.println(“———————————————“);

System.out.println(“———–2.使用流(使用TreeMap)【start】———–“);
count2(str);
System.out.println(“———–2.使用流(使用TreeMap)【end】———–“);

System.out.println(“———————————————“);

System.out.println(“———–3.巧用split【start】———–“);
count3(str);
System.out.println(“———–3.巧用split【end】———–“);

System.out.println(“———————————————“);

System.out.println(“———–4.巧用Pattern【start】———–“);
count4(str);
System.out.println(“———–4.巧用Pattern【end】———–“);
}


/**
*@author米兜
*@param
*@description1.数组的索引法
*@date2020/6/2622:51
*/
publicstaticvoidcount1(Stringstr){
//创建26个空间大小的数组,存放26个字母
int[]nums=newint[26];
for(chari:str.toCharArray()){
//自动将chari转化成ascall码
if(i>=97&&i<=122){
//利用数组的索引进行存储
nums[i-97]++;
}
}

for(inti=0;i<nums.length;i++){
if(nums[i]!=0){
//i加上97并且再转化为char类型就可以显示相应的字符
charj=(char)(i+97);
System.out.println(“字符:”+j+“====”+“个数”+nums[i]);
}
}
}

/**
*@author米兜
*@param
*@description2.使用流(使用TreeMap/这里也是用map)
*@date2020/6/2622:51
*/
publicstaticvoidcount2(Stringstr){
TreeMap<String,Long>result=Arrays.stream(str.split(“”))
.sorted()
//.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()));
.collect(Collectors.groupingBy(Function.identity(),TreeMap::new,Collectors.counting()));

Iteratoriter=result.entrySet().iterator();
while(iter.hasNext()){
Map.Entryentry=(Map.Entry)iter.next();
System.out.println(“字符:”+(String)entry.getKey()+“====”+“个数”+(Long)entry.getValue());
}
}


/**
*@author米兜
*@param
*@description3.巧用split
*@date2020/6/2622:51
*/
publicstaticvoidcount3(Stringstr){
ArrayList<String>arrayList=newArrayList<>();
for(charc:str.toCharArray()){
intcount=str.split(String.valueOf(c)).length-1;

//最后一个字符串split要+1
if(str.substring(str.length()-1,str.length()).equals(String.valueOf(c))){
count++;
}
if(arrayList.contains(String.valueOf(c))){
continue;
}
System.out.println(“字符:”+String.valueOf(c)+“====”+“个数”+count);
arrayList.add(String.valueOf(c));
}
}

/**
*@author米兜
*@param
*@description4.巧用Matcher
*@date2020/6/2622:51
*/
//如果要不区分大小写,则compile(minstr,CASE_INSENSITIVE)
publicstaticvoidcount4(Stringstr){
ArrayList<String>arrayList=newArrayList<>();
for(charc:str.toCharArray()){
intcount=0;

Matcherm=Pattern.compile(String.valueOf(c)).matcher(str);

if(arrayList.contains(String.valueOf(c))){
continue;
}

while(m.find()){
count++;
}
System.out.println(“字符:”+String.valueOf(c)+“====”+“个数”+count);
arrayList.add(String.valueOf(c));
}
}
}


二、运行结果

———–1.数组的索引法【start】———–

字符:a====个数2

字符:c====个数1

字符:d====个数1

字符:e====个数1

字符:g====个数2

字符:h====个数2

字符:i====个数1

字符:m====个数1

字符:n====个数3

字符:o====个数1

字符:u====个数5

字符:x====个数1

字符:y====个数1

字符:z====个数1

———–1.数组的索引法【end】———–

———————————————

———–2.使用流(使用TreeMap)【start】———–

字符:a====个数2

字符:c====个数1

字符:d====个数1

字符:e====个数1

字符:g====个数2

字符:h====个数2

字符:i====个数1

字符:m====个数1

字符:n====个数3

字符:o====个数1

字符:u====个数5

字符:x====个数1

字符:y====个数1

字符:z====个数1

———–2.使用流(使用TreeMap)【end】———–

———————————————

———–3.巧用split【start】———–

字符:g====个数2

字符:u====个数5

字符:a====个数2

字符:n====个数3

字符:z====个数1

字符:h====个数2

字符:c====个数1

字符:e====个数1

字符:x====个数1

字符:y====个数1

字符:m====个数1

字符:i====个数1

字符:d====个数1

字符:o====个数1

———–3.巧用split【end】———–

———————————————

———–4.巧用Pattern【start】———–

字符:g====个数2

字符:u====个数5

字符:a====个数2

字符:n====个数3

字符:z====个数1

字符:h====个数2

字符:c====个数1

字符:e====个数1

字符:x====个数1

字符:y====个数1

DisconnectedfromthetargetVM,address:’127.0.0.1:53939′,transport:’socket’

字符:m====个数1

字符:i====个数1

字符:d====个数1

字符:o====个数1

———–4.巧用Pattern【end】———–

Processfinishedwithexitcode0


三、总结

冰冻三尺非一日之寒,滴水石穿非一日之功。


Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数? - 网络|
  • 哪位老大知道情况,给解释一上咋回事
  • 哪位老大知道情况,给解释一上咋回事 | 哪位老大知道情况,给解释一上咋回事 ...

    Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数? - 网络|
  • telnet是什么牌子? - 网络|
  • telnet是什么牌子? - 网络| | telnet是什么牌子? - 网络| ...

    Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数? - 网络|
  • 淘宝店铺导航CSS代码使用修改技巧? |制作css3动画效果
  • 淘宝店铺导航CSS代码使用修改技巧? |制作css3动画效果 | 淘宝店铺导航CSS代码使用修改技巧? |制作css3动画效果 ...