package Day18; import java.util.Scanner; import java.util.Set; import java.util.TreeMap; /* * 分析: * A:首先键盘输入一个字符串 * B:创建一个TreeMap集合---键唯一---键值覆盖--自然排序 * C:将输入的字符串转换为字符数组 * D: 对字符数组进行遍历获取每个字符 * E:利用获取的每个字符来获取集合中的键值 * A:如何键值返回的null则将该字符添加到集合的键中--并将键值赋值为1 * B:如果返回值不为null则将返回值进行加1 * 、 C:此时添加集合的键是字符--键值是返回值加1 * D:同一个键实现键值的覆盖 * F:创建字符缓冲区---进行输出字符的拼接----(拼接比较特别) * G:遍历TreeMap集合--遍历的键和键值拼接添加到字符缓冲区 * H: 将字符缓冲的元素---转化为字符串 * I: 输出字符串得到最终结果 * * G: * */ public class Map8 { public static void main(String[] args) { //键盘输入字符串 Scanner sc = new Scanner(System.in); //提示用户输入一段字符串 System.out.println(\"请你输入一段字符串\"); //定义键盘输入对象的类型--字符串 String line = sc.nextLine(); //创建一个TreeMap集合进行 //键和键值的类型都为引用类型 //其中的键的类型是char的封装类Character也就是引用类 //键值的类型是int类型的封装类Integer TreeMap<Character,Integer> AA = new TreeMap<Character, Integer>(); //将字符串转换为字符数组 char [] arr = line.toCharArray(); //对这个字符数组进行遍历---获取每个字符 //使用增强for for(char e: arr){ //获取的字符向集合中寻找键值 Integer SM = AA.get(e); //对获取的键值进行判断 //判断键值是否为null--如果为null则将该字符添加为键--键值设置为1 if(SM==null){ AA.put(e,1); }else{ //如果键值不为null--说明集合中已经存在该建值 //这是的我们只需要进行键值的覆盖---使用同一个键--赋值不同的值 SM++; AA.put(e,SM); } } //创建字符串缓冲区---进行最后遍历数据的拼接 StringBuilder AB = new StringBuilder(); //遍历TreeMap集合--获取键和值 //获取键的集合 Set<Character> ABC = AA.keySet(); //对获取的键--进行遍历 for(Character w: ABC){ //根据键--找到对应的键值 --键值的类型是Integer Integer F = AA.get(w); //输出查看键和键值 //System.out.println(w+\"---\"+F); //对遍历的集合的键和值进行字符串的拼接----请仔细观察此字符串 AB.append(w).append(\"(\").append(F).append(\")\"); } //把字符串缓冲区的元素转化为字符串进行输出 String result = AB.toString(); System.out.println(result); } }
来源:https://www.cnblogs.com/ztg-java-xuexi/p/16067616.html
本站部分图文来源于网络,如有侵权请联系删除。