需求: 键盘录入一个字符串,统计其中各个字符出现的顺序
分析:
1.使用 Scanner 类获取一个字符串 2.创建 HashMap 集合,如果追求统计字符的美观性,可以使用TreeMap 3.遍历字符串得到每一个字符并将其作为TreeMap的键 4.通过键去集合中找相对应的值,看返回值是什么?返回null: 说明该字符在集合中不存在,就将该字符为键,次数1为值进行存储
返回的不是null: 说明该字符在集合中存在,就再次将该字符作为键,次数+1为值进行存储
5.遍历集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
public class TreeMapDemo { public static void main(String[] args) { //创建TreeMap集合对象 TreeMap<Character,Integer>tm= new TreeMap<Character,Integer>(); //创建Scanner对象 ? Scanner sc= new Scanner(System.in); System.out.println( "请输入一个字符串" ); String s=sc.nextLine(); //遍历字符串 for ( int i= 0 ;i<s.length();i++){ //获取每一个字符 char key =s.charAt(i); //拿到的每一个字符到集合中找相对应的值 Integer value=tm.get(key); //判断返回值 if (value== null ){ tm.put(key, 1 ); } else { value++; tm.put(key,value); } } //遍历集合并拼接 StringBuilder sb= new StringBuilder(); Set<Character> keySet=tm.keySet(); for ( char key :keySet){ Integer value=tm.get(key); sb.append(key).append( "(" ).append(value).append( ")" ); ? } String result = sb.toString(); System.out.println(result); } } ? |
补充:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import java.util.HashMap; import java.util.Scanner; import java.util.Set;
public class MapTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //键盘录入字符串 System.out.println( "请输入一串字符" ); //创建字符串对象,存储键盘输入的值 String line = scanner.nextLine(); //创建HashMap集合,键是character,值是Inter HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); //循环遍历字符串,得到每个字符 for ( int i = 0 ; i < line.length(); i++) { //通过charAt方法,将字符串的索引值,作为键添加到HashMap集合中 char key = line.charAt(i); //使用HashMap集合的get方法,对集合中的键(字符)进行判断 //创建Integer对象存储值 Integer value = hm.get(key); //返回值为空,将字符作为键,1作为存储值 if (value == null ) { hm.put(key, 1 ); } else { //返回值不为空,说明此字符在集合中出现过,将字符作为键,值加一 // 重新存储键(字符)和对应的值 value++; hm.put(key, value); } } //创建StringBuilder字符串序列 StringBuilder sb = new StringBuilder(); //创建set集合对象,通过keyset方法获取键 Set<Character> keyset = hm.keySet(); //增强for循环遍历,获取键所对应的值 for (Character key : keyset) { //使用get方法获取到键所对应的值 Integer value = hm.get(key); //对序列进行拼接,使用append方法 sb.append(key).append( "(" ).append(value).append( ")" ); } // 通过tostring方法返回StringBuilder此顺序中的数据的字符串,创建string对象接受此字符串 String result = sb.toString(); //打印结果 System.out.println(result); } } |
到此这篇关于Java案例使用集合方法实现统计任意字符串中字符出现的次数的文章就介绍到这了,更多相关Java集合统字符出现次数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
原文链接:https://HdhCmsTestcnblogs测试数据/CYan521/p/16079054.html
查看更多关于Java案例使用集合方法实现统计任意字符串中字符出现的次数的详细内容...