1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数 – java – 前端

Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数 – java – 前端

时间:2021-06-20 03:46:37

相关推荐

Java中不使用HashMap怎么实现统计字符串中每个字符出现的次数 – java – 前端

目前列出四种方式,希望对你有帮助。

数组的索引法使用流(使用TreeMap)巧用split巧用Pattern一、实现代码

import java.util.*;import java.util.function.Function;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.util.stream.Collectors;/** * @author 米兜 * @description * @date /6/26 22:23 * @modified by */public class Sum {public static void main(String[] args) {String str = “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 * @description 1.数组的索引法 * @date /6/26 22:51 */ public static void count1(String str) {//创建26个空间大小的数组,存放26个字母 int[] nums = new int[26];for (char i : str.toCharArray()) {//自动将char i转化成ascall码 if (i >= 97 && i <= 122) {//利用数组的索引进行存储 nums[i – 97]++;}}for (int i = 0; i < nums.length; i++) {if (nums[i] != 0) {//i加上97并且再转化为char类型就可以显示相应的字符 char j = (char) (i + 97);System.out.println(“字符:” + j + “====” + “个数” + nums[i]);}}}/** * @author 米兜 * @param * @description 2.使用流(使用TreeMap/这里也是用map) * @date /6/26 22:51 */ public static void count2(String str) {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()));Iterator iter = result.entrySet().iterator();while(iter.hasNext()) {Map.Entry entry = (Map.Entry)iter.next();System.out.println(“字符:” + (String)entry.getKey() + “====” + “个数” +(Long)entry.getValue());}}/** * @author 米兜 * @param * @description 3.巧用split * @date /6/26 22:51 */ public static void count3(String str) {ArrayList<String> arrayList = new ArrayList <>();for (char c : str.toCharArray()) {int count=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 * @description 4.巧用Matcher * @date /6/26 22:51 */ //如果要不区分大小写,则compile(minstr,CASE_INSENSITIVE) public static void count4(String str) {ArrayList<String> arrayList = new ArrayList<>();for (char c : str.toCharArray()) {int count = 0;Matcher m = pile(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

Disconnected from the target VM, address: ‘127.0.0.1:53939’, transport: ‘socket’

字符:m====个数1

字符:i====个数1

字符:d====个数1

字符:o====个数1

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

Process finished with exit code 0

三、总结

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。